さっきの記事を書いて面倒だなと思ったので、ローカルの開発時は docker-compose を使えば楽かなと思ってやってみた。

docker-compose.yml
1
2
3
4
5
6
7
version: "3"
services:
webapp:
build: .
command: carton exec -- morbo myapp.pl
ports:
- 3000:3000

このファイルからみると、 myapp.pl の場所が違うので直感的ではないけれど、 COPY.git までコピーされているのを見ると、アプリに必要なファイルだけをコピーするのが良いんじゃないか、と思った次第。

1
2
3
4
5
6
$ docker-compose up
Creating network "serenelake43934_default" with the default driver
Creating serenelake43934_webapp_1 ...
Creating serenelake43934_webapp_1 ... done
Attaching to serenelake43934_webapp_1
webapp_1 | Server available at http://127.0.0.1:3000

感想

楽だった。

多くのコンテナを使うようなものじゃなくても、 Dockerfile を上書きするように使えるのは便利。

docker build する度に、タグを入れるのは面倒だし、そうでなくても docker images<none> がたくさん生成されるのを見ると色々と正しく指定しなければいけないのかなと思ってくる。

まあ、一段落したら、全部止めて要らなさそうなやつは消しておくようにはしてます。

1
2
$ docker ps -a -q | xargs docker stop
$ docker image prune