docker
docker-compose

2つのdocker-compose間で疎通させる

合ってるかわからんけど一応できたのでメモ。

やりたいこと

  • ローカルのはなし
  • php-fpm / nginx 周りのフロントっぽいあたりがいる docker-compose
  • mysql / redis 周りのバックっぽいあたりがいる docker-compose の2つを用意
  • それぞれを起動させる
  • front から back に接続する

やったこと

いろいろやったけどとりあえず以下の方法でつながった。何か間違ってる気はする。もっといい方法が知りたい。

$ docker network create datastore-network

とりあえずこれで適当なネットワーク( driver:bridge, scope:local )を作成する。

それぞれの docker-compose.yml で datastore-network に対して設定する。
※volumesなどの設定は省略してますので、実際は適当に書いてください

backend
version: '2'
services:
  database:
    image: mariadb:10
    networks:
      outside:
        aliases:
          - database
networks:
  outside:
    external:
      name: datastore-network
frontend
version: '2'
services:
  php:
    build: ./php
    external_links:
      - database
    networks:
      - outside
      - frontend-tier

networks:
  frontend-tier:
    driver: bridge
  outside:
    external:
      name: datastore-network

こんな感じにして、 front も back も datastore-network につながってる感じになれたので、phpからは database:3306 に対して接続することができました。

いやぁでもマジこれで合ってるか全然自身ない。何かもっといい感じにexternal_links貼れるんじゃないかなって気がすごいする。けどわかんない。