##概要
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で起動できれば起動の手間が省けるのでいいですね。