はじめに
ローカル開発環境を作成する際に、ローカル開発環境用のリポジトリを作るのは依存度が高くなってしまうので嫌だった。
なので同一ネットワークに所属させてローカル開発環境はそれぞれのリポジトリに置くようにしてます。
今後、よりよいベスト・プラクティスを見つけようとは思ってますが一応問題なく動いているのでその方法を残します。
やり方
docker-dompose: version 3.5
サンプルはnetworks
以外はどうでもよかったので適当です
ネットワークを作成する
backend/docker-compose.yml
version: '3.5'
services:
app1:
image: alpine:3.4
ports:
- 50000:50000
networks:
- mynet #←serviceのapp1を作成したnetworkに所属させる
command: top
networks:
mynet: #←自分の好きなネットワーク名
name: mynet #←自分の好きなネットワーク名
上記のファイルのnetworks
にnameのみ定義しておくと自分で命名して新規ネットワークを作成できます
$ cd backend
$ docker-compose up -d
$ docker network ls
# ※結果からbridge host noneは抜いてます
NETWORK ID NAME DRIVER SCOPE
26350ce7ba23 mynet bridge local
既に存在しているネットワークに所属させる
networks
に先程作成したネットワークを宣言します
違いはexternal: true
のみでこれがあると既に存在しているネットワークへの参照をとれます
frontend/docker-compose.yml
version: '3.5'
services:
app2:
image: alpine:3.4
ports:
- 50001:50001
networks:
- mynet
command: top
networks:
mynet:
external: true
name: mynet
$ cd ../frontend
$ docker-compose up -d
ネットワーク確認
docker network inspect
を見てみると同じネットワークに所属していることがわかります
$ docker network inspect 26350ce7ba23
# ※Containers抜粋
"Containers": {
"34223f932ee2d1e21b78da2168d7ddceca457eef5f33dc943beeff891dc7a276": {
"Name": "backend_app1_1",
"EndpointID": "ae124e9bb5d3691c51c60520d3ffbd236be9946d2b1574b8bd06e192eebb2599",
"MacAddress": "02:42:ac:1e:00:02",
"IPv4Address": "172.30.0.2/16",
"IPv6Address": ""
},
"73fb6f4969a25640c526938b50d0d95e5b3bcf1eeefe99898669b11db4e66df4": {
"Name": "frontend_app2_1",
"EndpointID": "d6996a0ab64d429f081ea3144a38ba6122022348f87951dd3b862e66bcf6a31a",
"MacAddress": "02:42:ac:1e:00:03",
"IPv4Address": "172.30.0.3/16",
"IPv6Address": ""
}
},