回答編集履歴
3
Add second answer
answer
CHANGED
@@ -1,5 +1,64 @@
|
|
1
|
-
##
|
1
|
+
## 追記
|
2
2
|
|
3
|
+
### アプリケーションの配置について
|
4
|
+
|
5
|
+
Dockerfile では `WORKDIR` は /Books になっているので
|
6
|
+
docker-compose.yml でもホスト側ボリュームのバインドマウントする位置は
|
7
|
+
/Books に統一する必要があります
|
8
|
+
|
9
|
+
docker-compose.yml:
|
10
|
+
|
11
|
+
```diff
|
12
|
+
volumes:
|
13
|
+
- - .:/app_name
|
14
|
+
+ - .:/Books
|
15
|
+
```
|
16
|
+
|
17
|
+
アプリケーションを配置する位置は `WORKDIR` で設定したパスに統一する必要があります
|
18
|
+
コンテナーを起動したときのコマンドは `WORKDIR` で実行されるためです
|
19
|
+
|
20
|
+
これがずれているため、ホスト側のコードを更新しても
|
21
|
+
コンテナーを起動したときに実行されるコードは
|
22
|
+
Docker イメージをビルドした時点の過去のコードとなります
|
23
|
+
Dockerfile の `ADD` 命令でコンテナーの `WORKDIR` にコードを配置しているためです
|
24
|
+
|
25
|
+
Compose ファイルで `WORKDIR` にホストのコードをバインドマウントすれば
|
26
|
+
コンテナー起動時に実行されるコードは、ホスト側の現在のコードとなります
|
27
|
+
|
28
|
+
### データベースのパスワード
|
29
|
+
|
30
|
+
docker-compose.yml で `MYSQL_ROOT_PASSWORD: example` と指定しているので、
|
31
|
+
接続用のパスワードも合わせる必要があります
|
32
|
+
|
33
|
+
config/database.yml:
|
34
|
+
|
35
|
+
```diff
|
36
|
+
- password: password
|
37
|
+
+ password: example
|
38
|
+
```
|
39
|
+
|
40
|
+
### テーブルの作成
|
41
|
+
|
42
|
+
`docker-compose up` でコンテナーを起動したら、
|
43
|
+
別のターミナルを開き、次のコマンドを実行します:
|
44
|
+
|
45
|
+
```console
|
46
|
+
docker-compose run --rm web rails db:create
|
47
|
+
```
|
48
|
+
|
49
|
+
この設定を行わずに docker-compose up を実行しても、ブラウザーでアクセスすると次のようなエラーが表示されます:
|
50
|
+
|
51
|
+
```html
|
52
|
+
ActiveRecord::NoDatabaseError
|
53
|
+
FATAL: database "myapp_development" does not exist
|
54
|
+
```
|
55
|
+
|
56
|
+
参考: [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)
|
57
|
+
|
58
|
+
## 元の回答
|
59
|
+
|
60
|
+
### エラーメッセージについて
|
61
|
+
|
3
62
|
`config/database.yml` の `host` の設定が `localhost` になっている可能性があります
|
4
63
|
`host` は `db` に設定する必要があります
|
5
64
|
|
@@ -21,7 +80,7 @@
|
|
21
80
|
database: 自分のDBの名前
|
22
81
|
```
|
23
82
|
|
24
|
-
## socket について
|
83
|
+
### socket について
|
25
84
|
|
26
85
|
特別な理由がなければ `congit/database.yml` に `socket` の設定は必要ありません
|
27
86
|
`/tmp/mysql.sock` はローカルに MySQL が起動しているときの接続用ソケットです
|
@@ -30,12 +89,12 @@
|
|
30
89
|
|
31
90
|
参考: [MySQL - mysql.sockって何?|teratail](https://teratail.com/questions/121735#reply-186222)
|
32
91
|
|
33
|
-
## MySQL のサービスについて
|
92
|
+
### MySQL のサービスについて
|
34
93
|
|
35
94
|
MySQL のサービスは Docker Compose によって `db` サービスのコンテナーとして起動します
|
36
95
|
HomeBrew で Mac 上に MySQL をインストール・起動させる必要はありません
|
37
96
|
|
38
|
-
##
|
97
|
+
###
|
39
98
|
|
40
99
|
うまく動作しない場合は必ず自身のコードを質問欄に記載するようにします:
|
41
100
|
|
2
Add reference
answer
CHANGED
@@ -28,6 +28,8 @@
|
|
28
28
|
リモートの MySQL に接続するときは `socket` の設定がなくても
|
29
29
|
mysql2 アダプターが自動的にリモートに接続します
|
30
30
|
|
31
|
+
参考: [MySQL - mysql.sockって何?|teratail](https://teratail.com/questions/121735#reply-186222)
|
32
|
+
|
31
33
|
## MySQL のサービスについて
|
32
34
|
|
33
35
|
MySQL のサービスは Docker Compose によって `db` サービスのコンテナーとして起動します
|
1
Add expression
answer
CHANGED
@@ -21,6 +21,13 @@
|
|
21
21
|
database: 自分のDBの名前
|
22
22
|
```
|
23
23
|
|
24
|
+
## socket について
|
25
|
+
|
26
|
+
特別な理由がなければ `congit/database.yml` に `socket` の設定は必要ありません
|
27
|
+
`/tmp/mysql.sock` はローカルに MySQL が起動しているときの接続用ソケットです
|
28
|
+
リモートの MySQL に接続するときは `socket` の設定がなくても
|
29
|
+
mysql2 アダプターが自動的にリモートに接続します
|
30
|
+
|
24
31
|
## MySQL のサービスについて
|
25
32
|
|
26
33
|
MySQL のサービスは Docker Compose によって `db` サービスのコンテナーとして起動します
|