別のコンテナにあるdbに接続したい
別のコンテナにあるdbに接続したい場合。
(別のDocker Composeファイル(.ymlファイル) で設定しているコンテナに接続したい場合)
apple-apiからcarot_dbに接続したい
元yamlファイル
apple/docker-compose.yaml
version: "3"
services:
db:
build:
context: "."
dockerfile: ./orange/Dockerfile
container_name: orange-mysql
environment:
MYSQL_ROOT_PASSWORD: root
MYSQL_DATABASE: apple
MYSQL_USER: iphone
MYSQL_PASSWORD: iphonese
TZ: 'Asia/Tokyo'
volumes:
- ./db/data:/var/lib/mysql
ports:
- 3306:3306
networks:
- apple_net
api:
build:
context: "."
dockerfile: ./apple/Dockerfile
container_name: apple-api
volumes:
- "../app:/go/src"
ports:
- "8080:8080"
tty: true
networks:
- apple_net
networks:
apple_net:
driver: bridge
carot/docker-compose.yaml
version: '3.6'
services:
mysql:
image: mysql:5.7
command: mysqld --character-set-server=utf8mb4 --collation-server=utf8mb4_general_ci
container_name: "carot_db"
hostname: "carot_db"
ports:
- "3316:3306"
volumes:
- "./hoge:/hoga"
- "./ugo:/uga"
environment:
MYSQL_ROOT_PASSWORD: password
TZ: Asia/Tokyo
apple/docker-compose.yamlを修正
version: "3"
services:
db:
build:
context: "."
dockerfile: ./orange/Dockerfile
container_name: orange-mysql
environment:
MYSQL_ROOT_PASSWORD: root
MYSQL_DATABASE: apple
MYSQL_USER: iphone
MYSQL_PASSWORD: iphonese
TZ: 'Asia/Tokyo'
volumes:
- ./db/data:/var/lib/mysql
ports:
- 3306:3306
networks:
- apple_net
api:
build:
context: "."
dockerfile: ./apple/Dockerfile
container_name: apple-api
volumes:
- "../app:/go/src"
ports:
- "8080:8080"
tty: true
networks:
- apple_net
- carot_db_default
networks:
apple_net:
driver: bridge
carot_db_default:
external: true
参照
https://docs.docker.jp/compose/compose-file.html#id63
carot_db_defaultはどこから来た??
carot/docker-compose.yamlではnetworksの設定をしていないので
確認する必要があった。
docker network ls
NETWORK ID NAME DRIVER SCOPE
7beb35729a36 bridge bridge local
5356019c2b25 carot_db_default bridge local
030857de59a3 docker_container-link bridge local
5c490e6b8809 docker_apple_net bridge local
b32dc86cede2 host host local
207b881e58ds none null local
docker network ls で出た結果一覧を上から
docker inspectで確認。
docker inspect carot_db_default
略
"Containers": {
"9aa972e700a3faff897177dd9ce8f4df2a7b929984f87afcd8faf13edbd93e2b": {
"Name": "carot_db",
"EndpointID": "a671f5a445611fd21b3699a33d2012c829b2ed4f337d209c406423fea9a68545",
"MacAddress": "02:42:ac:14:00:03",
"IPv4Address": "172.20.0.3/16",
"IPv6Address": ""
},
},
略
コンテナ名を確認できた。
carot_dbはcarot_db_defaultネットワークを使用している事が
わかった為apple/docker-compose.yamlに記述している。
external: true
networksの設定だけで(external: true無しで)docker-composeを起動すると
そんなnetworkはないというエラーが出てしまうので
外部のものを使用します、ということでexternal: trueが設定されるらしい。
Author And Source
この問題について(別のコンテナにあるdbに接続したい), 我々は、より多くの情報をここで見つけました https://qiita.com/megponfire/items/2368e14f144c6a56dec8著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .