開発でのdockerの利用

例えば、簡単なhello worldプログラムがあるとする。 下記のコマンドで実行できる。

docker build -t test .  
...

docker run -d -p 5000:5000 test  
curl localhost:5000  

この方法の問題点は、コードの変更毎にイメージを再構築しないと行けないことにある。 これには解決策がある。

バイントマウント

コンテナ内のソースコードのフォルダの上に、ホストのソースコードをマウントする。

docker run -d -p 5000:5000 -v "$(pwd)"/app:/app test  

appディレクトリがコンテナ内のappディレクトリにマウントされるようになり、
これで内容をhello dockerに書き換えて

curl localhost:5000  

をするとhello dockerに変わっている。 ごく普通の開発環境がdockerコンテナにカプセル化できたことになる。

docker composeを使うなら、

volumes:  
 - ./app:/app

とすれば同じことになる。