自分的Dockerのユースケースをまとめてみた
ふだん雰囲気でDocker使っているのですが、もっと自由にDockerを使えるようになりたい!
ということで、自分的なDockerのユースケースを振り返ってまとめてみました。
1. リポジトリごとの開発環境の構築
リポジトリごとに開発で利用するPythonの環境を、Dockerを使って構築しています。
コマンド
`docker-compose run --rm python /bin/bash
version: '3'
services:
python:
build:
context: .
dockerfile: Dockerfile
volumes:
- ./src:/root/work
2. 開発用のデータベースの構築
command
(開発用のサーバーの起動前などに) docker-compose up -d dynamo
docker-compose.yml
version: '3'
services:
dynamo:
image: amazon/dynamodb-local:1.11.477
ports:
- "8001:8000"
3. ミドルウェアの実行
技術書典で出品するPDFファイルのビルドのために利用しています。 (Thanks for カウプラン機関極東支部 さん!)
コマンド
docker-compose run --rm review
docker-compose.yml
version: "3"
services:
review:
image:
kauplan/review2.5
volumes:
- $PWD:/work
entrypoint:
/bin/bash -c "cd /work; rake pdf"
4. cliツールのバイナリを直接インストールする代わりにする
例えば jq のバイナリを直接ローカルに置かない。
alias jq="docker run -i --rm mbentley/jq"
jq以外にも、例えばβ版のcliツールを利用する場合なんかは安心して使えますね。
反省
ブログを書くに当たり、改めてDockerについて学びがありました。
基本的に docker-composeを利用すること。
docker-compose upには--buildオプション、docker-compose runには--rmオプションをつけること。
...しかし、どうしてdocker-compose runには--buildオプションがないんだろう。一貫性が足りないよね。
- Dockerの仕様として、ADD, COPYで取得したファイルのハッシュが代わっていたら、それ以降のRUNのキャッシュは利用されないこと(つまり、 package.json が変更されていれば npm install は再実行される)