Deploy Haskell application

Hi guys! Is there a procedure to deploy a Haskell application? I have an Amazon EC2 micro instance to run my application, but it's way too small to compile it using cabal (compilation takes half a day rouhgly), so I compile it on my computer. Is there a convenient way to bundle the executable with the resources and ship it to the server? Thanks! Corentin

Hi,
These days, an increasingly popular solution to package an application
with its dependencies is to use Docker. You can build the Docker image
locally and push it to a Docker registry and retrieve it on your
remote machine, or you can dump it as a tarball and load it on your
remote machine.
You have different ways to create the Docker image, one of which would
be similar to pushing your Haskell binary to your remote machine. That
way is simply to compile your exectuable locally, and copy it to the
remote machine with is assets if any (you might even move it to a
.cabal directory as if it was installed through `cabal install`). By
default your executable will be statically linked, except for libgmp
that you have to install on the remote machine.
I recommand you look into Docker. You will be able to e-use its
knowledge to package increasingly complex applications (that might
have more numerous dependencies that you wouldn't have to manage on
the host).
HTH,
Thu
2014-06-11 12:24 GMT+02:00 Corentin Dupont
Hi guys! Is there a procedure to deploy a Haskell application? I have an Amazon EC2 micro instance to run my application, but it's way too small to compile it using cabal (compilation takes half a day rouhgly), so I compile it on my computer. Is there a convenient way to bundle the executable with the resources and ship it to the server?
Thanks! Corentin
_______________________________________________ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe

We package up the executables and other files into a Debain .deb package
using fpm after running cabal. Here is an example Makefile which runs
cabal, creates the debian package and adds it to our apt server:
https://github.com/openbrainsrc/debcd/blob/master/Makefile
This is run by our CI server after every commit to GitHub.
Tom
On Wed, Jun 11, 2014 at 11:33 AM, Vo Minh Thu
Hi,
These days, an increasingly popular solution to package an application with its dependencies is to use Docker. You can build the Docker image locally and push it to a Docker registry and retrieve it on your remote machine, or you can dump it as a tarball and load it on your remote machine.
You have different ways to create the Docker image, one of which would be similar to pushing your Haskell binary to your remote machine. That way is simply to compile your exectuable locally, and copy it to the remote machine with is assets if any (you might even move it to a .cabal directory as if it was installed through `cabal install`). By default your executable will be statically linked, except for libgmp that you have to install on the remote machine.
I recommand you look into Docker. You will be able to e-use its knowledge to package increasingly complex applications (that might have more numerous dependencies that you wouldn't have to manage on the host).
HTH, Thu
2014-06-11 12:24 GMT+02:00 Corentin Dupont
: Hi guys! Is there a procedure to deploy a Haskell application? I have an Amazon EC2 micro instance to run my application, but it's way too small to compile it using cabal (compilation takes half a day rouhgly), so I compile it on my computer. Is there a convenient way to bundle the executable with the resources and ship it to the server?
Thanks! Corentin
_______________________________________________ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe
_______________________________________________ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe

Thanks for your response!
Is there a way to ask Cabal to just deploy the resources and not compile
everything?
On Wed, Jun 11, 2014 at 11:47 AM, Tom Nielsen
We package up the executables and other files into a Debain .deb package using fpm after running cabal. Here is an example Makefile which runs cabal, creates the debian package and adds it to our apt server:
https://github.com/openbrainsrc/debcd/blob/master/Makefile
This is run by our CI server after every commit to GitHub.
Tom
On Wed, Jun 11, 2014 at 11:33 AM, Vo Minh Thu
wrote: Hi,
These days, an increasingly popular solution to package an application with its dependencies is to use Docker. You can build the Docker image locally and push it to a Docker registry and retrieve it on your remote machine, or you can dump it as a tarball and load it on your remote machine.
You have different ways to create the Docker image, one of which would be similar to pushing your Haskell binary to your remote machine. That way is simply to compile your exectuable locally, and copy it to the remote machine with is assets if any (you might even move it to a .cabal directory as if it was installed through `cabal install`). By default your executable will be statically linked, except for libgmp that you have to install on the remote machine.
I recommand you look into Docker. You will be able to e-use its knowledge to package increasingly complex applications (that might have more numerous dependencies that you wouldn't have to manage on the host).
HTH, Thu
2014-06-11 12:24 GMT+02:00 Corentin Dupont
: Hi guys! Is there a procedure to deploy a Haskell application? I have an Amazon EC2 micro instance to run my application, but it's way too small to compile it using cabal (compilation takes half a day rouhgly), so I compile it on my computer. Is there a convenient way to bundle the executable with the resources and ship it to the server?
Thanks! Corentin
_______________________________________________ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe
_______________________________________________ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe

Not sure what you mean - cabal doesn't do any deployment, or at least I
have not found a useful way of making it do so. In our case the deployment
is done by running apt-get update && apt-get install on the server.
Tom
On Wed, Jun 11, 2014 at 3:18 PM, Corentin Dupont
Thanks for your response! Is there a way to ask Cabal to just deploy the resources and not compile everything?
On Wed, Jun 11, 2014 at 11:47 AM, Tom Nielsen
wrote: We package up the executables and other files into a Debain .deb package using fpm after running cabal. Here is an example Makefile which runs cabal, creates the debian package and adds it to our apt server:
https://github.com/openbrainsrc/debcd/blob/master/Makefile
This is run by our CI server after every commit to GitHub.
Tom
On Wed, Jun 11, 2014 at 11:33 AM, Vo Minh Thu
wrote: Hi,
These days, an increasingly popular solution to package an application with its dependencies is to use Docker. You can build the Docker image locally and push it to a Docker registry and retrieve it on your remote machine, or you can dump it as a tarball and load it on your remote machine.
You have different ways to create the Docker image, one of which would be similar to pushing your Haskell binary to your remote machine. That way is simply to compile your exectuable locally, and copy it to the remote machine with is assets if any (you might even move it to a .cabal directory as if it was installed through `cabal install`). By default your executable will be statically linked, except for libgmp that you have to install on the remote machine.
I recommand you look into Docker. You will be able to e-use its knowledge to package increasingly complex applications (that might have more numerous dependencies that you wouldn't have to manage on the host).
HTH, Thu
2014-06-11 12:24 GMT+02:00 Corentin Dupont
: Hi guys! Is there a procedure to deploy a Haskell application? I have an Amazon EC2 micro instance to run my application, but it's way too small to compile it using cabal (compilation takes half a day rouhgly), so I compile it on my computer. Is there a convenient way to bundle the executable with the resources and ship it to the server?
Thanks! Corentin
_______________________________________________ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe
_______________________________________________ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe

In the .cabal file you can put a directive "data-files" and they will be
deployed in ~/.cabal/share...
I want to trigger only this.
On Wed, Jun 11, 2014 at 3:40 PM, Tom Nielsen
Not sure what you mean - cabal doesn't do any deployment, or at least I have not found a useful way of making it do so. In our case the deployment is done by running apt-get update && apt-get install on the server.
Tom
On Wed, Jun 11, 2014 at 3:18 PM, Corentin Dupont < corentin.dupont@gmail.com> wrote:
Thanks for your response! Is there a way to ask Cabal to just deploy the resources and not compile everything?
On Wed, Jun 11, 2014 at 11:47 AM, Tom Nielsen
wrote: We package up the executables and other files into a Debain .deb package using fpm after running cabal. Here is an example Makefile which runs cabal, creates the debian package and adds it to our apt server:
https://github.com/openbrainsrc/debcd/blob/master/Makefile
This is run by our CI server after every commit to GitHub.
Tom
On Wed, Jun 11, 2014 at 11:33 AM, Vo Minh Thu
wrote: Hi,
These days, an increasingly popular solution to package an application with its dependencies is to use Docker. You can build the Docker image locally and push it to a Docker registry and retrieve it on your remote machine, or you can dump it as a tarball and load it on your remote machine.
You have different ways to create the Docker image, one of which would be similar to pushing your Haskell binary to your remote machine. That way is simply to compile your exectuable locally, and copy it to the remote machine with is assets if any (you might even move it to a .cabal directory as if it was installed through `cabal install`). By default your executable will be statically linked, except for libgmp that you have to install on the remote machine.
I recommand you look into Docker. You will be able to e-use its knowledge to package increasingly complex applications (that might have more numerous dependencies that you wouldn't have to manage on the host).
HTH, Thu
2014-06-11 12:24 GMT+02:00 Corentin Dupont
: Hi guys! Is there a procedure to deploy a Haskell application? I have an Amazon EC2 micro instance to run my application, but it's way too small to compile it using cabal (compilation takes half a day rouhgly), so I compile it on my computer. Is there a convenient way to bundle the executable with the resources and ship it to the server?
Thanks! Corentin
_______________________________________________ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe
_______________________________________________ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe
participants (3)
-
Corentin Dupont
-
Tom Nielsen
-
Vo Minh Thu