www.digitalmars.com         C & C++   DMDScript  

digitalmars.D.announce - Containerize Your D Server Application

reply Mike Parker <aldacron gmail.com> writes:
One of the items on my list of "things I'd like to do if I only 
had the time" is to create a Mud server with D and deploy it with 
Docker. Just for kicks. If I ever do get around to it, my 
ignorance of all things Docker will not be the time sink it could 
have been thanks to this latest post on the D Blog by Kai Nacke.

The Blog
https://dlang.org/blog/2019/03/14/containerize-your-d-server-application/

Reddit
https://www.reddit.com/r/programming/comments/b0zqck/containerize_your_d_server_application/
Mar 14
next sibling parent reply Arun Chandrasekaran <aruncxy gmail.com> writes:
On Thursday, 14 March 2019 at 12:38:30 UTC, Mike Parker wrote:
 One of the items on my list of "things I'd like to do if I only 
 had the time" is to create a Mud server with D and deploy it 
 with Docker. Just for kicks. If I ever do get around to it, my 
 ignorance of all things Docker will not be the time sink it 
 could have been thanks to this latest post on the D Blog by Kai 
 Nacke.

 The Blog
 https://dlang.org/blog/2019/03/14/containerize-your-d-server-application/

 Reddit
 https://www.reddit.com/r/programming/comments/b0zqck/containerize_your_d_server_application/
Can we make dub generate the docker container as well? CMake can do that. The usage would be simply ``` dub build -b release dub build docker
Mar 14
next sibling parent Andre Pany <andre s-e-a-p.de> writes:
On Thursday, 14 March 2019 at 18:02:31 UTC, Arun Chandrasekaran 
wrote:
 On Thursday, 14 March 2019 at 12:38:30 UTC, Mike Parker wrote:
 One of the items on my list of "things I'd like to do if I 
 only had the time" is to create a Mud server with D and deploy 
 it with Docker. Just for kicks. If I ever do get around to it, 
 my ignorance of all things Docker will not be the time sink it 
 could have been thanks to this latest post on the D Blog by 
 Kai Nacke.

 The Blog
 https://dlang.org/blog/2019/03/14/containerize-your-d-server-application/

 Reddit
 https://www.reddit.com/r/programming/comments/b0zqck/containerize_your_d_server_application/
Can we make dub generate the docker container as well? CMake can do that. The usage would be simply ``` dub build -b release dub build docker
There is a plugin system planned for dub. This requirement seems to be a very good use case. https://github.com/dlang/dub/wiki/DEP3 If you have time, please contribute to Dub by adding this feature. Kind regards Andre
Mar 14
prev sibling parent Meta <jared771 gmail.com> writes:
On Thursday, 14 March 2019 at 18:02:31 UTC, Arun Chandrasekaran 
wrote:
 On Thursday, 14 March 2019 at 12:38:30 UTC, Mike Parker wrote:
 One of the items on my list of "things I'd like to do if I 
 only had the time" is to create a Mud server with D and deploy 
 it with Docker. Just for kicks. If I ever do get around to it, 
 my ignorance of all things Docker will not be the time sink it 
 could have been thanks to this latest post on the D Blog by 
 Kai Nacke.

 The Blog
 https://dlang.org/blog/2019/03/14/containerize-your-d-server-application/

 Reddit
 https://www.reddit.com/r/programming/comments/b0zqck/containerize_your_d_server_application/
Can we make dub generate the docker container as well? CMake can do that. The usage would be simply ``` dub build -b release dub build docker
Couldn't you use `postBuildCommands` for that? https://dub.pm/package-format-json.html#build-settings
Mar 14
prev sibling next sibling parent Jacob Carlborg <doob me.com> writes:
On 2019-03-14 13:38, Mike Parker wrote:
 One of the items on my list of "things I'd like to do if I only had the 
 time" is to create a Mud server with D and deploy it with Docker. Just 
 for kicks. If I ever do get around to it, my ignorance of all things 
 Docker will not be the time sink it could have been thanks to this 
 latest post on the D Blog by Kai Nacke.
 
 The Blog
 https://dlang.org/blog/2019/03/14/containerize-your-d-server-application/
 
 Reddit
 https://www.reddit.com/r/programming/comments/b0zqck/containerize_your_d
server_application/ 
 
For reducing the container image I recommend building what's called a "microcontainer" [1]. It's a container that only contains exactly what's needed to run the application, no more, no less. That is, it contains no base image. There's a tool called Smith [2] that helps to build these microcontainers. You specify the files you want to have included in the container, then it will use the dynamic linker to figure out all the dependencies of the executables. With LDC it's possible to build a fully statically linked executable, that makes it trivial to build a microcontainer out of. [1] https://blogs.oracle.com/developers/the-microcontainer-manifesto [2] https://github.com/oracle/smith -- /Jacob Carlborg
Mar 14
prev sibling next sibling parent reply "Nick Sabalausky (Abscissa)" <SeeWebsiteToContactMe semitwist.com> writes:
On 3/14/19 8:38 AM, Mike Parker wrote:
 One of the items on my list of "things I'd like to do if I only had the 
 time" is to create a Mud server with D and deploy it with Docker. Just 
 for kicks. If I ever do get around to it, my ignorance of all things 
 Docker will not be the time sink it could have been thanks to this 
 latest post on the D Blog by Kai Nacke.
 
 The Blog
 https://dlang.org/blog/2019/03/14/containerize-your-d-server-application/
 
 Reddit
 https://www.reddit.com/r/programming/comments/b0zqck/containerize_your_d
server_application/ 
 
Interestingly, this appears to be by far the best introduction to docker I've ever come across - and that's *including* docker's own vacuous website.
Mar 14
parent Meta <jared771 gmail.com> writes:
On Friday, 15 March 2019 at 04:43:21 UTC, Nick Sabalausky 
(Abscissa) wrote:
 On 3/14/19 8:38 AM, Mike Parker wrote:
 One of the items on my list of "things I'd like to do if I 
 only had the time" is to create a Mud server with D and deploy 
 it with Docker. Just for kicks. If I ever do get around to it, 
 my ignorance of all things Docker will not be the time sink it 
 could have been thanks to this latest post on the D Blog by 
 Kai Nacke.
 
 The Blog
 https://dlang.org/blog/2019/03/14/containerize-your-d-server-application/
 
 Reddit
 https://www.reddit.com/r/programming/comments/b0zqck/containerize_your_d_server_application/
 
Interestingly, this appears to be by far the best introduction to docker I've ever come across - and that's *including* docker's own vacuous website.
Agreed; it's a good starter tutorial to familiarize someone with the basics. Great article Kai!
Mar 15
prev sibling parent reply Valeriy Fedotov <valeriy.fedotov gmail.com> writes:
On Thursday, 14 March 2019 at 12:38:30 UTC, Mike Parker wrote:
 One of the items on my list of "things I'd like to do if I only 
 had the time" is to create a Mud server with D and deploy it 
 with Docker. Just for kicks. If I ever do get around to it, my 
 ignorance of all things Docker will not be the time sink it 
 could have been thanks to this latest post on the D Blog by Kai 
 Nacke.

 The Blog
 https://dlang.org/blog/2019/03/14/containerize-your-d-server-application/

 Reddit
 https://www.reddit.com/r/programming/comments/b0zqck/containerize_your_d_server_application/
Seems that multithe tutorial no longer works. ``` The dependency resolution process is taking too long. The dependency graph is likely hitting a pathological case in the resolution algorithm. Please file a bug report at https://github.com/dlang/dub/issues and mention the package recipe that reproduces this error. ``` Seems for me as issue of very old dub version. Running `dub --version` in the container shows ``` DUB version 1.8.0-3, built on May 7 2018 ``` Image tag is ubuntu:cosmic, it is relatively fresh distro (18.10). It is very sad, that dub from official ubuntu repo can not compile any vibe.d app because of this issue. Even in desktop installation. Anyway, the tutoial should be fixed, for example with usage of official Dlang docker image dlang2/dmd-ubuntu. But changing dlang2/dmd-ubuntu does not simply works either, because it is based on ubuntu artful 17.10, and 17.10 does not have libssl1.1. I tried to switch to libssl1.0, but then I got linker errors. Maybe for this beginner tutorial makes sense disabling SSL and swithing to dlang2/dmd-ubuntu base image? P.S. My first post here. :)
Apr 19
next sibling parent reply Andre Pany <andre s-e-a-p.de> writes:
On Friday, 19 April 2019 at 20:45:12 UTC, Valeriy Fedotov wrote:
 On Thursday, 14 March 2019 at 12:38:30 UTC, Mike Parker wrote:
 [...]
Seems that multithe tutorial no longer works. ``` The dependency resolution process is taking too long. The dependency graph is likely hitting a pathological case in the resolution algorithm. Please file a bug report at https://github.com/dlang/dub/issues and mention the package recipe that reproduces this error. ``` [...]
This question occurs from time to time. Dub version 1.8. is very old and the error you mentioned is fixed in the meantime. Your issue is fixed by update to a recent compiler (which includes a recent dub). Kind regards Andre
Apr 19
parent Valeriy Fedotov <valeriy.fedotov gmail.com> writes:
On Friday, 19 April 2019 at 20:51:56 UTC, Andre Pany wrote:
 On Friday, 19 April 2019 at 20:45:12 UTC, Valeriy Fedotov wrote:
 On Thursday, 14 March 2019 at 12:38:30 UTC, Mike Parker wrote:
 [...]
Seems that multithe tutorial no longer works. ``` The dependency resolution process is taking too long. The dependency graph is likely hitting a pathological case in the resolution algorithm. Please file a bug report at https://github.com/dlang/dub/issues and mention the package recipe that reproduces this error. ``` [...]
This question occurs from time to time. Dub version 1.8. is very old and the error you mentioned is fixed in the meantime. Your issue is fixed by update to a recent compiler (which includes a recent dub). Kind regards Andre
Sadly, it is not only my issue, it is reproduced for everyone wanting to make a multi-stage build with Dockerfile.multi from tutorial. I have made the PR to fix it (install fresh dmd and dub), but tutorial should be fixed too.
Apr 19
prev sibling parent Seb <seb wilzba.ch> writes:
On Friday, 19 April 2019 at 20:45:12 UTC, Valeriy Fedotov wrote:
 On Thursday, 14 March 2019 at 12:38:30 UTC, Mike Parker wrote:
 [...]
Seems that multithe tutorial no longer works. ``` The dependency resolution process is taking too long. The dependency graph is likely hitting a pathological case in the resolution algorithm. Please file a bug report at https://github.com/dlang/dub/issues and mention the package recipe that reproduces this error. ``` [...]
dlang2 was upgraded to Ubuntu 18.04 yesterday.
Apr 19