回答編集履歴

3

削除依頼が却下されたと連絡が来たので削除依頼についての記述を削除

2019/02/05 04:07

投稿

crhg
crhg

スコア1175

test CHANGED
@@ -1,7 +1,3 @@
1
- (削除依頼後に書き直したので削除は不要です)
2
-
3
-
4
-
5
1
  docker-composeがビルドするimage名が重複しているためではないかと思います。
6
2
 
7
3
 

2

内容を全面的に修正しました

2019/02/05 04:07

投稿

crhg
crhg

スコア1175

test CHANGED
@@ -1,59 +1,57 @@
1
- すいません、コンテナ名よくみらlaravel_とlumen_で違っていたので以下は忘れてください。削除依頼中。
1
+ (削除依頼後に書き直したので削除は不要です)
2
2
 
3
3
 
4
4
 
5
-
6
-
7
- docker-compose.ymlで`container_name`を使って明示的にコンテナを指定していますが、
5
+ docker-composeがビルドするimage名が重複しているためではないかと思います
8
-
9
- 1つめと2つめで同じコンテナ名を用いているので、1つめに立ち上げた同名のコンテナの操作になってしまったと思われます。
10
6
 
11
7
 
12
8
 
13
- 同じコンテナ名使わないようれば解決きま。方法2つあります。
9
+ imageビルドするとき、ビルドしようるimageと同名の古いimageですでに動作中のコンテナ止められます。
14
10
 
15
11
 
16
12
 
17
- 1. docker-compose.yml換えて`container_name`で付与する前がユニークになるようにす
13
+ docker-composeがビルド行うとき、image名は以下のように決まりま
18
-
19
- 2. `container_name`の指定をやめてdocker-composeが自動的に生成する名前を使う
20
14
 
21
15
 
22
16
 
23
- 方法1はdocker-compose.ymlちいち用意しなければいけなくて面倒なで、個人的には方法2がおすすめです。
17
+ * `docker-compose.yml`内で`image`で明示的に指定されていれば名前
18
+
19
+ * 指定が無ければ <プロジェクト名>_<サービス名>
24
20
 
25
21
 
26
22
 
23
+ 今回の場合、`image`の記述はないので後者になっているはずですが、サービス名は両方の`docker-compose.yml`で共通のものを使っているので
24
+
27
- 方法2を使う場合、自動的に生成される前は以下のようになります。
25
+ プロジェクトが重複していたらimage名が重複します。
28
26
 
29
27
 
30
28
 
31
- <プロジェクト名>_<サービス名>_<番>
29
+ <プロジェクト名>の指定方法は優先度の高い順に以下のりです。
32
30
 
33
31
 
34
32
 
35
- <サービス名>はdocker-compose.ymlで定義したサービス名です。
36
-
37
- <通番>は通常は1で-scaleオプションで複数立ち上げるとき2,3,...と増えていきます。
38
-
39
-
40
-
41
- <プロジェクト名>はすこしややこしいです。以下の順に優先して使われます。
42
-
43
-
44
-
45
- * -pオプションでの指定
33
+ * `-p`オプション
46
34
 
47
35
  * 環境変数`COMPOSE_PROJECT_NAME`
48
36
 
49
37
  * `.env`ファイルで指定した`COMPOSE_PROJECT_NAME`
50
38
 
51
- * docker-compose.ymlが置かれているディレクトリのディレクトリ名(`/foo/bar/baz/docker-compose.yml`なら`baz`)
39
+ * `docker-compose.yml`が置かれているディレクトリのディレクトリ名(`/foo/bar/baz/docker-compose.yml`なら`baz`)
52
40
 
53
41
 
54
42
 
55
- 同じdocker-compose.ymlファイルを使い回す場合、名前をユニークする鍵はプロジェクト名指定にかかっています。指定方法は可能ならディレクトリ名を変えてまうの確実ですしても同じディレクトリ名を使う場合は`.env`で切り替えるのがいいでしょう。
43
+ 最後のディレクトリ名は重複しがです。(例: ソースツリー内にdockerの設定を含めるときに固定で`docker`とい名前のサブディレクトリ下に置る)
56
44
 
57
45
 
58
46
 
59
- なおdocker-composeはコンテナプロジェクト名をラベルとして付与するので、プロジェクト名が異なっていれば`container_name`で指定した名前が同じだった場合重複を検出してエラーにしてくれますが、プロジェクト名が同じだと検出できません。今回パターンだったのはないかと思います。プロジェクト名を明示的に指定してない場合はすぐ上のディレクトリ名を使うので、別々の場所のつもりでも直上のディレクトリが同じ名前だと同じプロジェクト名になってエラー検出できないことになるので気をつけましょう。
47
+ この問題対処するには以下どちらかです。
48
+
49
+
50
+
51
+ * image名を重複しないように`docker-compose.yml`内で明示的に`image`で指定する
52
+
53
+ * プロジェクト名が重ならないようにする
54
+
55
+
56
+
57
+ 同じホストで複数のアプリケーションをdocker-composeで立ち上げようとするならプロジェクト名は別々にするのが望ましいです。重複しないようにディレクトリ名を変えるか`.env`ファイルで指定するのがいいのではないでしょうか。

1

削除依頼中

2019/02/04 22:25

投稿

crhg
crhg

スコア1175

test CHANGED
@@ -1,3 +1,9 @@
1
+ すいません、コンテナ名よくみたらlaravel_とlumen_で違っていたので以下は忘れてください。削除依頼中。
2
+
3
+
4
+
5
+
6
+
1
7
  docker-compose.ymlで`container_name`を使って明示的にコンテナ名を指定していますが、
2
8
 
3
9
  1つめと2つめで同じコンテナ名を用いているので、1つめに立ち上げた同名のコンテナの操作になってしまったと思われます。