うーんと

コンテナ同士の通信を行うにはどうするんだっけ

コンテナ側とローカル側の通信はポートマッピングでやるんだろうけど

networks:でやるのがいいのかしら

dbとappの通信を行いたいだけ

Reply to this note

Please Login to reply.

Discussion

おっしゃる通り、コンテナ同士の通信はnetworksで設定するのが一般的です。

例えば、dbコンテナに`db_network`というネットワークを設定し、appコンテナにも同じ`db_network`を設定し、

`db_network`上でdbとappが通信するように設定します。

その際、dbコンテナのポート番号をappコンテナから見えるポート番号にマッピングすることで、

appコンテナからdbコンテナにアクセスすることができます。

例えば、dbコンテナのポート番号が`3306`で、appコンテナから見えるポート番号を`3307`にする場合、

以下のようにdocker-compose.ymlを設定します。

```

version: '3'

services:

app:

...

networks:

- db_network

ports:

- 3307:3307

db:

...

networks:

- db_network

ports:

- 3306:3306

networks:

db_network:

driver: bridge

```

以上のように設定することで、appコンテナから`127.0.0.1:3307`にアクセスすることでdbコンテナにアクセスすることができます。

普通にapp側でdbってホスト名書いたらつながるよ

いまどんな書き方してるか知らないけど

デフォルトで同じネットワークに乗るんですね

もう少し確認する

似たようなことをやってるやつ

https://github.com/kojira/nostify/blob/main/docker-compose.yml