Hi Alfredo, I don't think I have the flexibility to adapt our workflow to the way it is described in your post, but I'll see what I can use for inspiration. I like the fact that you use native executables, and apparently that works well for you.
Thanks a lot. Damian. On Thu, Mar 30, 2017 at 8:14 AM, Alfredo Di Napoli <[email protected]> wrote: > Hey Damian! > > I don't know if it will answer your question entirely, but this is the > approach I have been using at work with success: > > http://www.alfredodinapoli.com/posts/2015-11-03-how-i-deploy-haskell-code.html > > It still requires to bundle your app using a "proprietary" Docker image (but > only for conveniency as, in theory, > you are in control) but it has the advantage that, at the end of the > process, you end up with (essentially) a cross-compiled > executable. > > I hope it can be of any use for you, if not just for taking inspiration > from. > > Alfredo > > > On Wednesday, March 29, 2017 at 3:28:54 PM UTC+2, Damian Nadales wrote: >> >> Hi, >> >> I finally got the chance of developing a Haskell based web-service at >> the company where I'm working. The service involves some interface >> with a Postgres database and an MQTT broker, for which Haskell seems >> to have some supporting libraries. To be able to make this service >> usable I need to place it in a docker container during the "deploy" >> stage of our Jenkins pipeline. >> >> I've made a preliminary experiment using stack's docker support: >> building a docker container can be readily achieved by `stack image >> container`, and I've plugged the generated container into our >> `docker-compose.yml` file, which describes the docker containers used >> in our local development environment. So far the relevant setup looks >> as follows: >> >> stack.yaml: >> >> resolver: lts-8.5 >> >> docker: >> auto-pull: false >> >> image: >> container: >> name: my-service >> base: fpco/stack-run >> >> docker-compose.yml >> >> my-service: >> container_name: my-service >> image: my-service >> links: >> - my-service-db >> entrypoint: >> - /usr/local/bin/my-service-exe >> >> I have some concerns with the setup above: >> 0. I'm using a no longer maintained image, namely fpco/stack-run. >> 1. I cannot specify the generated container image name based on >> the `version` field in the .cabal file. >> 2. I have to specify an entry point in the generated container >> (could I just use `entrypoints` in the `stack.yaml` configuration?) >> >> Based on these concerns I wanted to ask you how would you address it, >> or whether you have better suggestions for dockerizing your Haskell >> applications. >> >> The second question relates to the "deploy from Jenkins" requirement. >> In our current setup, every build step is executed from within a >> container, so installing stack in Jenkins is not a possibility. So >> this means that I'd have to run the `stack image container` from >> within a docker container (fpco/stack-build most likely), which in >> turn will spawn another fpco/stack-build container inside the first >> one to start the creation of the container. This is quite cumbersome, >> but I see no better alternative given the constraint mentioned above. >> Do you have any suggestions? >> >> Finally, the resulting image will have to be pushed to a docker >> registry hosted on AWS. For this the best I have now is to do it via a >> shell script (or Turtle) since as far as I can see stack has no >> support for publishing images. How do you publish your containers to >> private registries? >> >> Thanks in advance >> Damian. > > -- > You received this message because you are subscribed to the Google Groups > "Commercial Haskell" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to [email protected]. > To post to this group, send email to [email protected]. > To view this discussion on the web visit > https://groups.google.com/d/msgid/commercialhaskell/add028f4-0ed6-4fd4-b577-0b857d5bd5d0%40googlegroups.com. > For more options, visit https://groups.google.com/d/optout. -- You received this message because you are subscribed to the Google Groups "Commercial Haskell" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. To post to this group, send email to [email protected]. To view this discussion on the web visit https://groups.google.com/d/msgid/commercialhaskell/CAM7nXefMbXePhygR%3DUN1HHeZEvxtzBeFr3FGGPWzZyEND5JQmA%40mail.gmail.com. For more options, visit https://groups.google.com/d/optout.
