teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

4

追記

2021/11/17 01:33

投稿

KAOsaka
KAOsaka

スコア531

answer CHANGED
@@ -83,4 +83,21 @@
83
83
  # - db
84
84
  ```
85
85
 
86
- その後、再度ローカルディレクトリをマウントし、起動できるかどうかの確認をしてみてください。
86
+ その後、再度ローカルディレクトリをマウントし、起動できるかどうかの確認をしてみてください。
87
+
88
+ ## 追記
89
+
90
+ > いかのようなログが出力されました。正常には立ち上がっているようです。
91
+
92
+ 正常に立ち上がったのであれば、正常に立ち上がった状態の`/var/lib/mysql`ディレクトリがコンテナ内にありますので、
93
+ コンテナが立ち上がっている状態で、以下のコマンドでコンテナ内の`/var/lib/mysql`ディレクトリをローカルの`./src/db/mysql_data`ディレクトリにコピーしてください。
94
+
95
+ ``` bash
96
+ docker cp [コンテナID]:/var/lib/mysql ./src/db/mysql_data
97
+ ```
98
+
99
+ その後、docker-compose.ymlのvolumes部分のコメントアウトを外し、ローカルの`./src/db/mysql_data`ディレクトリを使用した状態でコンテナが立ち上がるかの確認をしてください。
100
+
101
+ > http://localhost:3000を開いた際に以下のようなメッセージが出力されました
102
+
103
+ webのコンテナ設定をコメントアウトしているためかと思われます。

3

追記

2021/11/17 01:33

投稿

KAOsaka
KAOsaka

スコア531

answer CHANGED
@@ -53,4 +53,34 @@
53
53
 
54
54
  `docker run`コマンドではdocker-compose.ymlに定義されているdbコンテナは立ち上がりません。
55
55
 
56
- `docker-compose run コンテナ名`または`docker compose run コンテナ名`を使用してください。
56
+ `docker-compose run コンテナ名`または`docker compose run コンテナ名`を使用してください。
57
+
58
+ ## 追記
59
+
60
+ > src/db/mysql_data以下のファイルを削除してみてください。
61
+
62
+ これでも立ち上がらなければ、一旦ローカルディレクトリのマウントを外して立ち上げた上で、正常に起動したコンテナの`/var/lib/mysql`をローカルの`./src/db/mysql_data`にコピーしてみてください。
63
+
64
+ ``` yml
65
+ version: '3'
66
+ services:
67
+ db:
68
+ image: mysql:8.0
69
+ command: --default-authentication-plugin=mysql_native_password
70
+ # volumes:
71
+ # - ./src/db/mysql_data:/var/lib/mysql
72
+ environment:
73
+ MYSQL_ROOT_PASSWORD: password
74
+
75
+ # web:
76
+ # build: .
77
+ # command: bundle exec rails s -p 3000 -b '0.0.0.0'
78
+ # volumes:
79
+ # - ./src:/app
80
+ # ports:
81
+ # - "3000:3000"
82
+ # depends_on:
83
+ # - db
84
+ ```
85
+
86
+ その後、再度ローカルディレクトリをマウントし、起動できるかどうかの確認をしてみてください。

2

追記

2021/11/09 09:06

投稿

KAOsaka
KAOsaka

スコア531

answer CHANGED
@@ -42,4 +42,15 @@
42
42
  # - "3000:3000"
43
43
  # depends_on:
44
44
  # - db
45
- ```
45
+ ```
46
+
47
+ ## 追記
48
+
49
+ > コマンドを打つ際dbコンテナのみを立ち上げる際はどのようなコマンドでしょうか。
50
+ > すいません、こちらのようなコマンドでしょうか
51
+ >
52
+ > `docker run --name コンテナ名 -e MYSQL_ROOT_PASSWORD=secret -d mysql8.0`
53
+
54
+ `docker run`コマンドではdocker-compose.ymlに定義されているdbコンテナは立ち上がりません。
55
+
56
+ `docker-compose run コンテナ名`または`docker compose run コンテナ名`を使用してください。

1

追記

2021/11/09 06:56

投稿

KAOsaka
KAOsaka

スコア531

answer CHANGED
@@ -10,4 +10,36 @@
10
10
  MYSQL_ROOT_PASSWORD: password
11
11
  ```
12
12
 
13
- のようです。
13
+ のようです。
14
+
15
+ ## 追記
16
+
17
+ > たしかにそこが違っていたので直して実行してみたところ
18
+ > このようなエラーが出ました
19
+ >
20
+ > Unknown MySQL server host 'db' (-3)
21
+
22
+ おそらく`db`コンテナが立ち上がっていない(立ち上がってすぐ落ちている)ため、`web`コンテナから参照できていない状態かと思われます。
23
+ まずは`web`コンテナの設定をコメントアウトして、`db`コンテナが立ち上がるように修正してみてはいかがでしょうか。
24
+
25
+ ``` yml
26
+ version: '3'
27
+ services:
28
+ db:
29
+ image: mysql:8.0
30
+ command: --default-authentication-plugin=mysql_native_password
31
+ volumes:
32
+ - ./src/db/mysql_data:/var/lib/mysql
33
+ environment:
34
+ MYSQL_ROOT_PASSWORD: password
35
+
36
+ # web:
37
+ # build: .
38
+ # command: bundle exec rails s -p 3000 -b '0.0.0.0'
39
+ # volumes:
40
+ # - ./src:/app
41
+ # ports:
42
+ # - "3000:3000"
43
+ # depends_on:
44
+ # - db
45
+ ```