はじめに
docker-compose、ようやく1.2.0のrcが取れましたね。
というわけで、前回の投稿においてshellで無理やりやっていたネットワーク用のcontainerをdocker-composeで作るように修正してみました。
基本構造(おさらい)
今回作るサービスの構造はこんな感じです。
networkというコンテナはポートを外部に見せているだけで、各サービスはnetworkに相乗り(net:container:network)する形でつくります。
前回からの変更点
networkコンテナ
前回の投稿から追加されるnetworkコンテナの定義としては以下のようになります。
docker-compose.yml
network:
image: busybox
ports:
- "16667:16667"
- "127.0.0.1:9000:9000"
tty: true
ポイントとしてはtty: trueを指定すること。
指定しないとbusyboxはそのまま終了しちゃいます。
net: container:service
net: containerの指定の仕方は基本的にあまり変わってないです。
docker-compose.yml
znc:
image: jimeh/znc
expose:
- "16667"
volumes:
- $HOME/.znc:/znc-data
net: container:network
これまでは「net: "container:net_irc"」
とダブルクオート付きで書いていたところのダブルクオートをとっただけです。
(ダブルクオート付きだとどうなるかとかは未調査。)
実際のコード
docker-compose.yml
network:
image: busybox
ports:
- "16667:16667"
- "127.0.0.1:9000:9000"
tty: true
znc:
image: jimeh/znc
expose:
- "16667"
volumes:
- $HOME/.znc:/znc-data
net: container:network
bitlbee:
image: aostanin/bitlbee
expose:
- "6667"
volumes:
- $HOME/.bitlbee:/data
net: container:network
shout:
build: ./shout
expose:
- "9000"
volumes:
- $HOME/.shout:/root/.shout
net: container:network
おわりに。
前から待ち望んでいたアップデートがようやく来て、docker-composeにもっていた不満は一応解消された感じです。
複数コンテナを立ち上げないというのはあまりdocker-composeを活かしていない気もしますが、個人用途としてはnet: container:serviceのパターンは追加とかも含め便利なので試してみてくださいな。