回答編集履歴

2

depends_onが指定されていない場合の挙動を修正

2020/06/18 04:40

投稿

hope_mucci
hope_mucci

スコア4447

test CHANGED
@@ -1,6 +1,6 @@
1
1
  `depends_on`はコンテナの作成順序を決めるだけのもので質問者さんが想像するようなコンテナ間の依存関係を定義するものではありません。
2
2
 
3
- `depends_on`が指定されていない場合、コンテナは記載された上から順番に作成されます。
3
+ `depends_on`が指定されていない場合、コンテナは~~記載された上から順番に作成されます。~~同時に作成されます。
4
4
 
5
5
 
6
6
 
@@ -21,3 +21,15 @@
21
21
  `docker-compose up`だけで運用するなら全然問題ないのですが、`docker-compose up [service-name]`のように引数にサービス名をつけてupするような場合、起動サービスの`depends_on`で記載されたサービスが先にビルドされます。無関係のサービスはビルドされません。このような場合では依存関係の記載が有効でしょう。
22
22
 
23
23
  でもサービス名つけてupするような用事はほとんどないような・・・
24
+
25
+
26
+
27
+ ### 追記2
28
+
29
+ 本文も修正しましたが、`depends_on`が指定されていない場合、それぞれのコンテナは同時に作成が開始されます。
30
+
31
+ コンテナ作成開始時に、docker内部DNSにサービス名でアドレスが引けるよう登録されるようです。
32
+
33
+ bsdfanさんのコメント通り、nginx起動時にconfファイルを読み込み転送先ホストの名前解決を行うようです(相手ホストとの通信は発生せず、名前解決のみ?)それまでにDNSに相手ホスト情報が登録されていなければエラーとなりますが、コンテナが同時に起動されていれば十分間に合うようです。
34
+
35
+ 意図的に逆向きに`depends_on`を記載していない限りは実質大丈夫だと思われます。

1

docker-compose up [service] の場合を追記

2020/06/18 04:40

投稿

hope_mucci
hope_mucci

スコア4447

test CHANGED
@@ -13,3 +13,11 @@
13
13
 
14
14
 
15
15
  要するに、本件に限って言えば接続や中身のサービスをコントロールする必要が(たまたま)なかっただけです。
16
+
17
+
18
+
19
+ ### 追記
20
+
21
+ `docker-compose up`だけで運用するなら全然問題ないのですが、`docker-compose up [service-name]`のように引数にサービス名をつけてupするような場合、起動サービスの`depends_on`で記載されたサービスが先にビルドされます。無関係のサービスはビルドされません。このような場合では依存関係の記載が有効でしょう。
22
+
23
+ でもサービス名つけてupするような用事はほとんどないような・・・