概要 †docker-compose で作成したコンテナから、他の docker-compose で作成済みのコンテナにアクセスする方法を記載する。 目次 †サンプルフォルダ構成 †
mycompose1
└── docker-compose.yml mycompose2 └── docker-compose.yml (方法1) ホスト経由でアクセスする †host.docker.internal を使用してホスト経由でアクセスする。 ![]() 1つ目の docker-composemycompose1/docker-compose.yml version: '3'
services:
mysamplepostgres1_1:
hostname: mysamplepostgres1_1
container_name: mysamplepostgres1_1
image: postgres:14
volumes:
- "./volumes/pgdata:/var/lib/postgresql/data"
environment:
- POSTGRES_PASSWORD=postgres
ports:
- "5433:5432"
2つ目の docker-compose †mycompose2/docker-compose.yml version: '3'
services:
mysampleadminer1_2:
hostname: mysampleadminer1_2
container_name: mysampleadminer1_2
image: adminer
ports:
- "8080:8080"
extra_hosts:
- "host.docker.internal:host-gateway"
以上で mysampleadminer1_2 から「host.docker.internal:5433」で postgres にアクセス可能となる。 (方法2) コンテナを同じdockerネットワークに配置する †1つ目の docker-compose †mycompose1/docker-compose.yml version: '3'
services:
mysamplepostgres2_1:
hostname: mysamplepostgres2_1
container_name: mysamplepostgres2_1
image: postgres:14
volumes:
- "./volumes/pgdata:/var/lib/postgresql/data"
environment:
- POSTGRES_PASSWORD=postgres
2つ目の docker-compose †上記の1つ目の docker-compose は デフォルトで mycompose1_default というネットワーク内に配置される為、 mycompose2/docker-compose.yml version: '3'
services:
mysampleadminer2_2:
hostname: mysampleadminer2_2
container_name: mysampleadminer2_2
image: adminer
ports:
- "8080:8080"
networks:
default:
name: mycompose1_default
external: true
以上で mysamplepostgres2_2 から「mysamplepostgres2_1:5432」で postgreSQL にアクセス可能となる。 |