Help us understand the problem. What is going on with this article?

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

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away