Edited at

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

More than 1 year has passed since last update.

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


やりたいこと


  • ローカルのはなし

  • 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貼れるんじゃないかなって気がすごいする。けどわかんない。