回答編集履歴

2

Fix expression

2020/08/14 15:26

投稿

y_shinoda
y_shinoda

スコア3272

test CHANGED
@@ -45,6 +45,32 @@
45
45
  MYSQL_PASSWORD=password
46
46
 
47
47
  DATABASE_HOST=db
48
+
49
+ ```
50
+
51
+
52
+
53
+ database.yml は `password` を `MYSQL_ROOT_PASSWORD` から `MYSQL_PASSWORD` に変更します:
54
+
55
+
56
+
57
+ ```yaml
58
+
59
+ default: &default
60
+
61
+ adapter: mysql2
62
+
63
+ encoding: utf8
64
+
65
+ pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %>
66
+
67
+ username: <%= ENV.fetch('MYSQL_USER') { 'root' } %>
68
+
69
+ password: <%= ENV.fetch('MYSQL_PASSWORD') { 'db_root_password' } %>
70
+
71
+ host: <%= ENV.fetch('DATABASE_HOST') { 'db' } %>
72
+
73
+ port: <%= ENV.fetch('DATABASE_PORT') { 3306 } %>
48
74
 
49
75
  ```
50
76
 

1

Add expression

2020/08/14 15:26

投稿

y_shinoda
y_shinoda

スコア3272

test CHANGED
@@ -1,3 +1,137 @@
1
+ ## 追記
2
+
3
+
4
+
5
+ 次の記事を参照している前提で回答します
6
+
7
+ [Docker + Rails + Puma + Nginx + MySQL - Qiita](https://qiita.com/eighty8/items/0288ab9c127ddb683315)
8
+
9
+
10
+
11
+ ### MYSQL_USER には root 以外を設定
12
+
13
+
14
+
15
+ `MYSQL_USER` には root を設定することはできません:
16
+
17
+
18
+
19
+ ```console
20
+
21
+ db_1 | 2020-08-14 09:42:31+00:00 [Note] [Entrypoint]: Creating user root
22
+
23
+ db_1 | ERROR 1396 (HY000) at line 1: Operation CREATE USER failed for 'root'@'%'
24
+
25
+ db_1 |
26
+
27
+ test-docker-compose_db_1 exited with code 1
28
+
29
+ ```
30
+
31
+
32
+
33
+ root でも良いですが、データベースの標準的な利用法に則って
34
+
35
+ アプリケーションがアクセスするための一般ユーザーを作成しましょう:
36
+
37
+
38
+
39
+ ```ini
40
+
41
+ MYSQL_ROOT_PASSWORD=db_root_password
42
+
43
+ MYSQL_USER=app
44
+
45
+ MYSQL_PASSWORD=password
46
+
47
+ DATABASE_HOST=db
48
+
49
+ ```
50
+
51
+
52
+
53
+ ### nginx.conf のディレクトリー設定
54
+
55
+
56
+
57
+ ディレクトリーを記事の設定から変更されているので、
58
+
59
+ 次の 2 箇所の変更も必要になります:
60
+
61
+
62
+
63
+ ```diff
64
+
65
+ # ソケット通信したいのでpuma.sockを指定
66
+
67
+ - server unix:///webapp/tmp/sockets/puma.sock;
68
+
69
+ + server unix:///my_app/tmp/sockets/puma.sock;
70
+
71
+
72
+
73
+ # ドキュメントルートの指定
74
+
75
+ - root /webapp/public;
76
+
77
+ + root /my_app/public;
78
+
79
+ ```
80
+
81
+
82
+
83
+ ### データベースの作成
84
+
85
+
86
+
87
+ 記事ではコマンドで作成する手順となっています:
88
+
89
+
90
+
91
+ [DBの作成 | Docker + Rails + Puma + Nginx + MySQL - Qiita](https://qiita.com/eighty8/items/0288ab9c127ddb683315#db%E3%81%AE%E4%BD%9C%E6%88%90)
92
+
93
+
94
+
95
+ ```console
96
+
97
+ $ docker-compose exec app rails db:create
98
+
99
+ ```
100
+
101
+
102
+
103
+ しかし、これは MySQL 公式イメージの正しい使い方ではありません
104
+
105
+ MySQL 公式イメージでは環境変数 `MYSQL_DATABASE` でデータベース名を指定することで
106
+
107
+ コンテナー起動時に自動的にデータベースを作成します:
108
+
109
+
110
+
111
+ ```ini
112
+
113
+ MYSQL_ROOT_PASSWORD=db_root_password
114
+
115
+ MYSQL_USER=app
116
+
117
+ MYSQL_PASSWORD=password
118
+
119
+ DATABASE_HOST=db
120
+
121
+ MYSQL_DATABASE=my_app_development
122
+
123
+ ```
124
+
125
+
126
+
127
+ 参考: [mysql - Docker Hub](https://hub.docker.com/_/mysql)
128
+
129
+
130
+
131
+ ## 元の回答
132
+
133
+
134
+
1
135
  ぱっと見問題なさそうに見えますね
2
136
 
3
137
  次の点について確認してみるとどうでしょうか?
@@ -12,4 +146,4 @@
12
146
 
13
147
  2
14
148
 
15
- `docker-compose logs` を実行すると、特に `my_app_db_1` について、どのようなログが表示されますか?
149
+ `docker-compose logs` を実行すると、特に `my_app_db_1` について、どのようなログが表示されますか?db.env