概要

docker-compose で作成したコンテナから、他の docker-compose で作成済みのコンテナにアクセスする方法を記載する。

目次

サンプルフォルダ構成

mycompose1
 └── docker-compose.yml
mycompose2
 └── docker-compose.yml

(方法1) ホスト経由でアクセスする

host.docker.internal を使用してホスト経由でアクセスする。
※ただし、ホスト経由となる為、ホスト側にバインドされていないポートへのアクセスは出来ない点に注意。

image1.png

1つ目の docker-compose

mycompose1/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 にアクセス可能となる。
※ mysampleadminer1_2 からは host.docker.internal という名前でホストを参照できる状態になる為。

(方法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 というネットワーク内に配置される為、
こちらの docker-compose のデフォルトネットワークも mycompose1_default にする事で、同一ネットワークにコンテナが配置される。
https://docs.docker.jp/compose/networking.html

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 にアクセス可能となる。
※ホスト経由ではない為、ホスト側にバインドしていないポートへのアクセスも可能。
 (上記の例では Postgres はホスト側にポートバインドしていないが、mysampleadminer2_2 からアクセス可能)


添付ファイル: fileimage1.png [詳細]

トップ   差分 バックアップ リロード   一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2024-02-04 (日) 14:02:06 (379d)