回答編集履歴

3

Add second answer

2020/09/04 11:44

投稿

y_shinoda
y_shinoda

スコア3272

test CHANGED
@@ -1,4 +1,122 @@
1
- ## エラーメッセージについて
1
+ ## 追記
2
+
3
+
4
+
5
+ ### アプリケーションの配置について
6
+
7
+
8
+
9
+ Dockerfile では `WORKDIR` は /Books になっているので
10
+
11
+ docker-compose.yml でもホスト側ボリュームのバインドマウントする位置は
12
+
13
+ /Books に統一する必要があります
14
+
15
+
16
+
17
+ docker-compose.yml:
18
+
19
+
20
+
21
+ ```diff
22
+
23
+ volumes:
24
+
25
+ - - .:/app_name
26
+
27
+ + - .:/Books
28
+
29
+ ```
30
+
31
+
32
+
33
+ アプリケーションを配置する位置は `WORKDIR` で設定したパスに統一する必要があります
34
+
35
+ コンテナーを起動したときのコマンドは `WORKDIR` で実行されるためです
36
+
37
+
38
+
39
+ これがずれているため、ホスト側のコードを更新しても
40
+
41
+ コンテナーを起動したときに実行されるコードは
42
+
43
+ Docker イメージをビルドした時点の過去のコードとなります
44
+
45
+ Dockerfile の `ADD` 命令でコンテナーの `WORKDIR` にコードを配置しているためです
46
+
47
+
48
+
49
+ Compose ファイルで `WORKDIR` にホストのコードをバインドマウントすれば
50
+
51
+ コンテナー起動時に実行されるコードは、ホスト側の現在のコードとなります
52
+
53
+
54
+
55
+ ### データベースのパスワード
56
+
57
+
58
+
59
+ docker-compose.yml で `MYSQL_ROOT_PASSWORD: example` と指定しているので、
60
+
61
+ 接続用のパスワードも合わせる必要があります
62
+
63
+
64
+
65
+ config/database.yml:
66
+
67
+
68
+
69
+ ```diff
70
+
71
+ - password: password
72
+
73
+ + password: example
74
+
75
+ ```
76
+
77
+
78
+
79
+ ### テーブルの作成
80
+
81
+
82
+
83
+ `docker-compose up` でコンテナーを起動したら、
84
+
85
+ 別のターミナルを開き、次のコマンドを実行します:
86
+
87
+
88
+
89
+ ```console
90
+
91
+ docker-compose run --rm web rails db:create
92
+
93
+ ```
94
+
95
+
96
+
97
+ この設定を行わずに docker-compose up を実行しても、ブラウザーでアクセスすると次のようなエラーが表示されます:
98
+
99
+
100
+
101
+ ```html
102
+
103
+ ActiveRecord::NoDatabaseError
104
+
105
+ FATAL: database "myapp_development" does not exist
106
+
107
+ ```
108
+
109
+
110
+
111
+ 参考: [db サービスに Rails アプリケーションが利用するデータベースを新規作成 | Docker 公式ドキュメントの Rails Quickstart 完全解説 - Qiita](https://qiita.com/y_shinoda/items/1d02d3c63e003e6c7ea2#db-%E3%82%B5%E3%83%BC%E3%83%93%E3%82%B9%E3%81%AB-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%8C%E5%88%A9%E7%94%A8%E3%81%99%E3%82%8B%E3%83%87%E3%83%BC%E3%82%BF%E3%83%99%E3%83%BC%E3%82%B9%E3%82%92%E6%96%B0%E8%A6%8F%E4%BD%9C%E6%88%90)
112
+
113
+
114
+
115
+ ## 元の回答
116
+
117
+
118
+
119
+ ### エラーメッセージについて
2
120
 
3
121
 
4
122
 
@@ -44,7 +162,7 @@
44
162
 
45
163
 
46
164
 
47
- ## socket について
165
+ ### socket について
48
166
 
49
167
 
50
168
 
@@ -62,7 +180,7 @@
62
180
 
63
181
 
64
182
 
65
- ## MySQL のサービスについて
183
+ ### MySQL のサービスについて
66
184
 
67
185
 
68
186
 
@@ -72,7 +190,7 @@
72
190
 
73
191
 
74
192
 
75
- ##
193
+ ###
76
194
 
77
195
 
78
196
 

2

Add reference

2020/09/04 11:44

投稿

y_shinoda
y_shinoda

スコア3272

test CHANGED
@@ -58,6 +58,10 @@
58
58
 
59
59
 
60
60
 
61
+ 参考: [MySQL - mysql.sockって何?|teratail](https://teratail.com/questions/121735#reply-186222)
62
+
63
+
64
+
61
65
  ## MySQL のサービスについて
62
66
 
63
67
 

1

Add expression

2020/09/04 06:16

投稿

y_shinoda
y_shinoda

スコア3272

test CHANGED
@@ -44,6 +44,20 @@
44
44
 
45
45
 
46
46
 
47
+ ## socket について
48
+
49
+
50
+
51
+ 特別な理由がなければ `congit/database.yml` に `socket` の設定は必要ありません
52
+
53
+ `/tmp/mysql.sock` はローカルに MySQL が起動しているときの接続用ソケットです
54
+
55
+ リモートの MySQL に接続するときは `socket` の設定がなくても
56
+
57
+ mysql2 アダプターが自動的にリモートに接続します
58
+
59
+
60
+
47
61
  ## MySQL のサービスについて
48
62
 
49
63