5
5

More than 5 years have passed since last update.

DockerCompose コンテナ間接続

Posted at

概要

Dockerコンテナ間で通信をしたい場合のDockerComposeの書き方です。
DB用のコンテナとWeb用のコンテナを分けて使う場合に使ってます。
今回、DBはPostgreSQLを使いますが、基本的にどのDBも同じはずです。

実行環境

Centos 7.6

DockerCompose

docker-compose.yml

version: '3.7'
services:
  myapp-db:
    image: postgresql11:1.0.2
    container_name: myapp-db
    privileged: true
    command: /sbin/init
    networks:
      - mynet

  myapp-server:
    image: server-image:1.0
    container_name: myapp-server
    privileged: true
    command: /sbin/init
    depends_on:
      - myapp-db
    networks:
      - mynet

networks:
  mynet:
    driver: bridge

myapp-serverにはdepends_onでmyapp-dbを指定し、接続できるようにする。

起動

docker-compose up -d

確認

PostgreSQLを起動したあと、
Webのコンテナに接続し、接続コマンドで接続できるか確認する。
PostgreSQLの場合は下記を試す。

$ psql -h myapp-db -U postgres

接続できればOKです。
できない場合はdbにpingうってみて届いているかどうか確認してください。
もし届いている場合は、db側の設定が間違えている可能性があります。
例えば、起動していない、localhost以外からの通信を遮断しているなどが考えられます。
pg_hba.confで接続が許可されているか確認してみてください。

終わりに

linkオプションで接続する方法もあるが、linkオプションはdeprecatedらしいのでもう使わないほうがいいかも。
docker-composeで起動できれば起動の手間が省けるのでいいですね。

5
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
5