合ってるかわからんけど一応できたのでメモ。
やりたいこと
- ローカルのはなし
- 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貼れるんじゃないかなって気がすごいする。けどわかんない。