回答編集履歴

2

全体的に手直し

2018/05/08 16:09

投稿

miyabi-sun
miyabi-sun

スコア21158

test CHANGED
@@ -4,17 +4,17 @@
4
4
 
5
5
  一言で言ってしまえばdocker-compose.ymlは`docker run`のパラメータを記述するファイルです。
6
6
 
7
- (それ付随する色ん便利な恩恵はありますが、まず`docker run`を別ファイルに逃がすという役割が最も大きいでしょう)
7
+ (も様々な恩恵はありますが、`docker run`を別ファイルに逃がす役割が最も大きいでしょう)
8
-
8
+
9
+
10
+
9
- Webサーバを立ち上げる為DBにMySQLを選択したましょう。
11
+ 質問文にMySQLとありすのでMySQLサーバを見ていきましょう。
10
-
11
-
12
-
12
+
13
- 起動コマンドは[MySQL - Docker Hub](https://hub.docker.com/_/mysql/)に書いてあります。
13
+ [MySQL - Docker Hub](https://hub.docker.com/_/mysql/)に要件が色々と書いてあります。
14
-
14
+
15
- これを元に…最初からDBや各種テーブルは作成しておいたほうが良いですよね。
15
+ これを元に`docker run`コマンドを作りましょう…最初からDBや各種テーブルは作成しておいたほうが良いですよね。
16
-
16
+
17
- 大体こんな感じのコマンドを毎回打ち込んでください。
17
+ できました。大体こんな感じのコマンドを毎回打ち込んでください。
18
18
 
19
19
 
20
20
 
@@ -22,15 +22,21 @@
22
22
 
23
23
 
24
24
 
25
+ ……って長っ!!こんな呪文覚えきれないですよ。
26
+
27
+
28
+
29
+ 続いてWebサーバのコンテナです。
30
+
31
+ コンテナ(仮想マシン)が切り離されてしまっているので、vagrantみたいにlocalhost:3306で繋ぎに行けません。
32
+
25
- Dockerはrunと同時にネットワークに所属して、nameで繋げるようにすることが可能です。
33
+ そこでDocker`docker run`と同時にネットワークに所属して、nameで指定したコンテナにアクセスにぐ事が可能です。
26
-
27
- (linkというオプションでもいけますが、レガシー扱いになっており、何時削除されるか分からない状態です)
28
34
 
29
35
  基本的にDocker流儀に従う場合はDBへの接続情報等は環境変数で管理するのが良いとされているので、これまた長い呪文を使って立ち上げる事になります。
30
36
 
31
37
 
32
38
 
33
- まぁ、一回っきりなら許せますね。
39
+ 、まぁ、一回っきりなら許せますね。
34
40
 
35
41
 
36
42
 
@@ -38,25 +44,33 @@
38
44
 
39
45
 
40
46
 
41
- 3ヶ月経過し、開発が中盤に差し掛かった所で別の開発者がこう話しかけてきました。
47
+ 1ヶ月経過し、開発が中盤に差し掛かった所で同僚がこう話しかけてきました。
42
-
48
+
43
- 「MySQLのカラム更新したから、MySQLの定義ファイル修正した適用しておいてくれ」
49
+ 「MySQLのカラム更新したからよ。定義ファイル修正したから適用しておいてくれ」
44
-
45
-
46
-
50
+
51
+
52
+
47
- まじかよ…折角立ち上げたMySQLのコンテナ削除して立ち上げ直しです。
53
+ まじかよ…折角立ち上げたMySQLのコンテナ削除して立ち上げ直しです。
48
-
54
+
49
- 3ヶ月前に打ち込んだMySQLコンテナを起動する`docker run`のコマンド、覚えていますか?
55
+ 1ヶ月前に打ち込んだMySQLコンテナを起動する`docker run`のコマンド、覚えていますか?
50
-
51
-
52
-
56
+
57
+
58
+
53
- はい、覚えているわけがありませんね。
59
+ まぁ、覚えていませんね。
60
+
54
-
61
+ じゃあシェルスクリプトにMySQLの`docker run`コマンドをベタッとコピペして…
62
+
63
+
64
+
55
-
65
+ それもいい選択肢ですが少し待って下さい。
56
-
66
+
57
- この役に立つのがdocker-composeなのです。
67
+ んな時用意されているのがdocker-composeです。
58
-
68
+
69
+
70
+
59
- さっきのDockerRunコマンドを元に、こんな感じでdocker-compose.ymlを作ってきま
71
+ さっきの`docker run`コマンドを元に、こんな感じでdocker-compose.ymlを作ってきましょう
72
+
73
+ 何となく`docker run`で出てきたオプションが盛り込まれてる事が分かります。
60
74
 
61
75
 
62
76
 
@@ -116,7 +130,63 @@
116
130
 
117
131
 
118
132
 
119
- docker-composeコマンドを利用します。
133
+ 使う時はdocker-composeコマンドを利用します。
134
+
135
+
136
+
137
+ ```Bash
138
+
139
+ # コマンドの確認
140
+
141
+ $ docker-compose
142
+
143
+ Define and run multi-container applications with Docker.
144
+
145
+
146
+
147
+ # 定義ファイルで記述したコンテナの一覧のみ表示される
148
+
149
+ $ docker-compose ps
150
+
151
+
152
+
153
+ # 定義ファイルの順番にコンテナを順次立ち上げ、-dなのでバックグラウンド扱いにする
154
+
155
+ $ docker-compose up -d
156
+
157
+
158
+
159
+ # mysqlのログを参照、-fはtailと同義(Ctrl+cで抜ける)
160
+
161
+ $ docker-compose logs -f mysql
162
+
163
+
164
+
165
+ # あ、ちょっとコンテナの中に入りたい
166
+
167
+ $ docker-compose exec mysql bash
168
+
169
+
170
+
171
+ # 終わったら停止
172
+
173
+ $ docker-compose stop
174
+
175
+ Stopping web_1 ... done
176
+
177
+ Stopping mysql_1 ... done
178
+
179
+
180
+
181
+ $ docker-compose rm -f
182
+
183
+ Removing web_1 ... done
184
+
185
+ Removing mysql_1 ... done
186
+
187
+ ```
188
+
189
+
120
190
 
121
191
  毎回この長ったらしいコマンド名を入力するのは疲れると思いますのでaliasでも作っておくと捗るかもしれませんね。
122
192
 
@@ -124,66 +194,18 @@
124
194
 
125
195
 
126
196
 
127
- ```Bash
128
-
129
- # コマンドの確認
130
-
131
- $ docker-compose
132
-
133
- Define and run multi-container applications with Docker.
134
-
135
-
136
-
137
- # 定義ファイルで記述したコンテナの一覧のみ表示される
138
-
139
- $ docker-compose ps
140
-
141
-
142
-
143
- # 定義ファイルの順番にコンテナを順次立ち上げ、-dなのでバックグラウンド扱いにする
144
-
145
- $ docker-compose up -d
146
-
147
-
148
-
149
- # mysqlのログを参照、-fはtailと同義(Ctrl+cで抜ける)
150
-
151
- $ docker-compose logs -f mysql
152
-
153
-
154
-
155
- # あ、ちょっとコンテナの中に入りたい
156
-
157
- $ docker-compose exec mysql bash
158
-
159
-
160
-
161
- # 終わったら停止
162
-
163
- $ docker-compose stop
164
-
165
- Stopping web_1 ... done
166
-
167
- Stopping mysql_1 ... done
168
-
169
-
170
-
171
- $ docker-compose rm -f
172
-
173
- Removing web_1 ... done
174
-
175
- Removing mysql_1 ... done
176
-
177
- ```
178
-
179
-
180
-
181
197
  コマンドの豊富さを見れば何となく分かるかと思いますが、
182
198
 
199
+ 起動パラメータや依存コンテナが分かるということは、コンテナの立ち上げ順番を保証してくれたり、
200
+
201
+ 一緒に起動や停止処理までしっかり面倒見てくれるので、様々な恩恵を受ける事ができます。
202
+
183
- シェルスクリプトにMySQLの`docker run`コマンドをベタッコピペしたのと比較にならな程の恩恵を受けている事が分かりま
203
+ シェルスクリプトにベタッとrunコマンドを貼り付けるだけとは大違ね)
184
204
 
185
205
 
186
206
 
187
207
  同僚が環境の事を質問してきたとしても、
188
208
 
189
209
  「docker-compose.ymlを見れば全部書いてあるよ、そこから追ってみたら?」の一言で終わります。
210
+
211
+ こんな風にDockerfileと併用することでサーバの要件としても使えますので、とても便利です。是非覚えましょう。

1

ちょっとだけ変えたんじゃ

2018/05/08 16:09

投稿

miyabi-sun
miyabi-sun

スコア21158

test CHANGED
@@ -2,7 +2,9 @@
2
2
 
3
3
 
4
4
 
5
- 要約するとdocker-compose.ymlは`docker run`のパラメータを記述するファイルです。
5
+ 一言で言ってしまえばdocker-compose.ymlは`docker run`のパラメータを記述するファイルです。
6
+
7
+ (それに付随する色んな便利な恩恵はありますが、まず`docker run`を別ファイルに逃がすという役割が最も大きいでしょう)
6
8
 
7
9
  Webサーバを立ち上げる為にDBにMySQLを選択したとしましょう。
8
10
 
@@ -150,6 +152,12 @@
150
152
 
151
153
 
152
154
 
155
+ # あ、ちょっとコンテナの中に入りたい
156
+
157
+ $ docker-compose exec mysql bash
158
+
159
+
160
+
153
161
  # 終わったら停止
154
162
 
155
163
  $ docker-compose stop
@@ -167,3 +175,15 @@
167
175
  Removing mysql_1 ... done
168
176
 
169
177
  ```
178
+
179
+
180
+
181
+ コマンドの豊富さを見れば何となく分かるかと思いますが、
182
+
183
+ シェルスクリプトにMySQLの`docker run`コマンドをベタッとコピペしたのとは比較にならない程の恩恵を受けている事が分かります。
184
+
185
+
186
+
187
+ 同僚が環境の事を質問してきたとしても、
188
+
189
+ 「docker-compose.ymlを見れば全部書いてあるよ、そこから追ってみたら?」の一言で終わります。