そろそろDockerをまじめにやらないといけなくなってきた。D言語は飾りです。
まずは試す
準公式?のDockerイメージがあるのでpullしてくる。
$ docker pull dlanguage/dmd (...)
README にあるとおりに試す、ファイル名だけかえて hello.d
というファイルを作成しておく。
Dockerfileの内容をみるとベースはUbuntu16.04だった。
コマンドを試すと、あっさりと動いた。
$ docker run --rm -ti -v $(pwd):/src dlanguage/dmd dmd -run hello.d Hello
イメージのサイズをみると614MBほど。
$ docker images| grep dlang dlanguage/dmd latest 51a13a70578f 3 weeks ago 614MB
生成した成果物をローカルに残したかったら -w
オプションを使う。
ここでは生成したバイナリはrootユーザ権限で作成されている、カレントのユーザに変更したければ --user $(id -u):$(id -g)
をつける。
$ docker run --rm -ti -v $(pwd):/src -w /src dlanguage/dmd dmd -c hello.d $ ls -a ./ ../ hello.d hello.o
dubを使ったビルドもできる。
$ dub init -n dockertest && cd $_ (...) $ docker run --rm -ti -v $(pwd):/src -w /src dlanguage/dmd dub build --build=release Performing "release" build using dmd for x86_64. dockertest ~master: target for configuration "application" is up to date. To force a rebuild of up-to-date targets, run again with --force. $ ls dockertest* dub.json source/ $ ./dockertest Edit source/app.d to start your project.
ひとこと
Dockerに対してまだどういう使い方するのかいいのかイメージが沸いてない部分がある。(Dockerだけに、ね)