networksを設定してネットワークを共有することで、複数のdocker-compose間での接続が可能になります。
例として、JavaサーブレットからDBのデータを取得するサンプルを作りました。
サンプルは、こちらの記事で紹介したものを流用しています。
それぞれ、別のdocker-composeで立ち上げます。
DBを起動するdocker-compose
version: '3'
services:
db:
container_name: db_sample
build: ./postgresql
ports:
- 5432:5432
volumes:
- ./postgresql/init:/docker-entrypoint-initdb.d
environment:
POSTGRES_USER: user
POSTGRES_PASSWORD: pass
restart: always
こちらをdocker-compose upで起動して、ネットワークを確認します。
docker network list
% docker network list
NETWORK ID NAME DRIVER SCOPE
f5ea148210d5 bridge bridge local
90871cce2948 db_default bridge local
b1a610f12075 host host local
5e5291941dc2 none null local
おそらく、[projectname]_defaultという名称のネットワークが存在すると思います。こちらが、使用しているネットワークになります。
ネットワークが見つかったら、共有したい方のdocker-composeにnetworksの指定をします。
JavaサーブレットをTomcatで起動するdocker-compose
version: '3'
services:
app:
container_name: tomcat
build: ./tomcat
ports:
- "8080:8080"
networks:
- db_default
networks:
db_default:
external: true
共有ネットワークを設定すると、[projectname]_defaultというネットワークを作成せずに指定したネットワークを使用するようになります。
設定のやり方はこんな感じ。
version: '3'
services:
app:
・・・
networks:
- <使用するネットワーク名>
networks:
<使用するネットワーク名>:
external: true
これで、接続できるようになります。
以上。
↓↓Javaの基本はこの1冊でマスターできる!!↓↓
リンク
コメント