複数のdocker-compose間を接続するにはnetworksを設定する必要があります

docker docker
スポンサーリンク

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冊でマスターできる!!↓↓

コメント

タイトルとURLをコピーしました