回答編集履歴
1
Add expression
answer
CHANGED
|
@@ -13,4 +13,33 @@
|
|
|
13
13
|
|
|
14
14
|
参考:
|
|
15
15
|
[Connect the database | Quickstart: Compose and Rails | Docker Documentation](https://docs.docker.com/compose/rails/#connect-the-database)
|
|
16
|
-
[Rails アプリケーションのデータベース接続設定を db サービスに接続できるように変更 | Docker 公式ドキュメントの Rails Quickstart 完全解説 - Qiita](https://qiita.com/y_shinoda/items/1d02d3c63e003e6c7ea2#rails-%E3%82%A2%E3%83%97%E3%83%AA%E3%82%B1%E3%83%BC%E3%82%B7%E3%83%A7%E3%83%B3%E3%81%AE%E3%83%87%E3%83%BC%E3%82%BF%E3%83%99%E3%83%BC%E3%82%B9%E6%8E%A5%E7%B6%9A%E8%A8%AD%E5%AE%9A%E3%82%92-db-%E3%82%B5%E3%83%BC%E3%83%93%E3%82%B9%E3%81%AB%E6%8E%A5%E7%B6%9A%E3%81%A7%E3%81%8D%E3%82%8B%E3%82%88%E3%81%86%E3%81%AB%E5%A4%89%E6%9B%B4)
|
|
16
|
+
[Rails アプリケーションのデータベース接続設定を db サービスに接続できるように変更 | Docker 公式ドキュメントの Rails Quickstart 完全解説 - Qiita](https://qiita.com/y_shinoda/items/1d02d3c63e003e6c7ea2#rails-%E3%82%A2%E3%83%97%E3%83%AA%E3%82%B1%E3%83%BC%E3%82%B7%E3%83%A7%E3%83%B3%E3%81%AE%E3%83%87%E3%83%BC%E3%82%BF%E3%83%99%E3%83%BC%E3%82%B9%E6%8E%A5%E7%B6%9A%E8%A8%AD%E5%AE%9A%E3%82%92-db-%E3%82%B5%E3%83%BC%E3%83%93%E3%82%B9%E3%81%AB%E6%8E%A5%E7%B6%9A%E3%81%A7%E3%81%8D%E3%82%8B%E3%82%88%E3%81%86%E3%81%AB%E5%A4%89%E6%9B%B4)
|
|
17
|
+
|
|
18
|
+
## サービス名を `localhost` にした場合に通信できない理由
|
|
19
|
+
|
|
20
|
+
ちなみに、最初の質問時に `db` のサービス名を `localhost` にしていたのを見て
|
|
21
|
+
興味があったので調べてみましたが、
|
|
22
|
+
その場合も `web` のコンテナー自身へのアクセスになってしまいます:
|
|
23
|
+
|
|
24
|
+
```console
|
|
25
|
+
$ docker-compose run --rm web bash
|
|
26
|
+
Creating network "test-docker_default" with the default driver
|
|
27
|
+
Creating test-docker_localhost_1 ... done
|
|
28
|
+
root@b0d74fe61d07:/food-pictures# ping localhost
|
|
29
|
+
PING localhost (127.0.0.1) 56(84) bytes of data.
|
|
30
|
+
64 bytes from localhost (127.0.0.1): icmp_seq=1 ttl=64 time=0.038 ms
|
|
31
|
+
64 bytes from localhost (127.0.0.1): icmp_seq=2 ttl=64 time=0.046 ms
|
|
32
|
+
64 bytes from localhost (127.0.0.1): icmp_seq=3 ttl=64 time=0.046 ms
|
|
33
|
+
64 bytes from localhost (127.0.0.1): icmp_seq=4 ttl=64 time=0.036 ms
|
|
34
|
+
^C
|
|
35
|
+
--- localhost ping statistics ---
|
|
36
|
+
4 packets transmitted, 4 received, 0% packet loss, time 106ms
|
|
37
|
+
rtt min/avg/max/mdev = 0.036/0.041/0.046/0.007 ms
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
Docker Compose のサービス同士の通信は
|
|
41
|
+
Docker が別途起動する DNS サービスに各サービス名が登録されることによって行われます
|
|
42
|
+
|
|
43
|
+
しかし、それよりも各コンテナーのローカルに存在する
|
|
44
|
+
`/etc/hosts` の `localhost` エントリーが `127.0.0.1` を指している設定が優先されるため
|
|
45
|
+
サービス名 `localhost` への通信は自分自身への通信となってしまうようです
|