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