回答編集履歴
3
Fix answer
test
CHANGED
@@ -1,84 +1,64 @@
|
|
1
|
-
##
|
1
|
+
## 追記
|
2
2
|
|
3
3
|
|
4
4
|
|
5
|
-
[Quickstart: Compose and Rails | Docker Documentation](https://docs.docker.com/compose/rails/)
|
6
|
-
|
7
|
-
この手順、僕もやりましたが、上記サイトの説明は不十分で
|
8
|
-
|
9
|
-
|
5
|
+
(psc さんの自己解決より、WSL であり、絶対パスにすることで解決することを受けて調査しました)
|
10
6
|
|
11
7
|
|
12
8
|
|
13
|
-
|
9
|
+
おそらく Windows 10 の Windows 17.09 以前に起因する問題のようです
|
10
|
+
|
11
|
+
Windows 10 の Windows Update を行うことでこの問題は起きなくなるようです
|
12
|
+
|
13
|
+
参考: [Setting Up Docker for Windows and WSL to Work Flawlessly — Nick Janetakis](https://nickjanetakis.com/blog/setting-up-docker-for-windows-and-wsl-to-work-flawlessly#running-windows-10-1803)
|
14
14
|
|
15
15
|
|
16
16
|
|
17
|
-
|
17
|
+
Windows 10 17.09 以前の WSL 環境で動作させるためには、
|
18
18
|
|
19
|
-
|
19
|
+
次のような方法があるようです
|
20
20
|
|
21
|
-
|
22
|
-
|
23
|
-
|
21
|
+
[Docker-compose and incorrect absolute paths for volumes · Issue #1854 · microsoft/WSL](https://github.com/microsoft/WSL/issues/1854#issuecomment-291845122)
|
24
22
|
|
25
23
|
|
26
24
|
|
27
25
|
```console
|
28
26
|
|
27
|
+
sudo mkdir /c
|
28
|
+
|
29
|
-
do
|
29
|
+
sudo mount --bind /mnt/c /c
|
30
|
+
|
31
|
+
cd /c/path/to/project
|
32
|
+
|
33
|
+
docker-compose ...
|
30
34
|
|
31
35
|
```
|
32
36
|
|
33
37
|
|
34
38
|
|
35
|
-
最初に `Dockerfile` をビルドしてできるイメージは
|
36
|
-
|
37
|
-
|
39
|
+
## 元の回答
|
38
40
|
|
39
41
|
|
40
42
|
|
41
|
-
|
43
|
+
今、手元で、この質問欄にある `docker-compose.yml`, `Dockerfile`, `Gemfile` と、
|
42
44
|
|
43
|
-
|
45
|
+
空の `Gemfile.lock`, それから Quickstart にある `enrtypoint.sh` を使って
|
46
|
+
|
47
|
+
質問欄のコマンドを実行したところ、こちらでは正常にファイルが生成できました
|
44
48
|
|
45
49
|
|
46
50
|
|
47
|
-
こ
|
51
|
+
ログを見たところ、rails new 自体は正常に動作しているようなので、
|
48
52
|
|
49
|
-
|
53
|
+
あとは出力されたファイルがどこにいってしまっているかだけだと思います
|
50
54
|
|
51
55
|
|
52
56
|
|
53
|
-
|
57
|
+
いずれかのファイルをこの質問欄に書いてある状態から変更していないでしょうか?
|
54
58
|
|
55
|
-
|
59
|
+
特に docker-compose.yml が怪しい気がしますが、
|
56
60
|
|
57
|
-
この `Gemfile` の内容で、最初に作った `Gemfile` の内容を置き換え、
|
58
|
-
|
59
|
-
イメージを作り直します
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
> Now that you’ve got a new Gemfile,
|
64
|
-
|
65
|
-
> you need to build the image again.
|
66
|
-
|
67
|
-
> (This, and changes to the Gemfile or the Dockerfile,
|
68
|
-
|
69
|
-
> should be the only times you’ll need to rebuild.)
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
```console
|
74
|
-
|
75
|
-
|
61
|
+
そこにこだわらず色々確認してみてください
|
76
|
-
|
77
|
-
```
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
## 追記
|
82
62
|
|
83
63
|
|
84
64
|
|
2
Add second expression
test
CHANGED
@@ -1,3 +1,7 @@
|
|
1
|
+
## 元の回答
|
2
|
+
|
3
|
+
|
4
|
+
|
1
5
|
[Quickstart: Compose and Rails | Docker Documentation](https://docs.docker.com/compose/rails/)
|
2
6
|
|
3
7
|
この手順、僕もやりましたが、上記サイトの説明は不十分で
|
@@ -71,3 +75,71 @@
|
|
71
75
|
docker-compose build
|
72
76
|
|
73
77
|
```
|
78
|
+
|
79
|
+
|
80
|
+
|
81
|
+
## 追記
|
82
|
+
|
83
|
+
|
84
|
+
|
85
|
+
> コンテナを起動後、コンテナ内でrails new するということでしょうか?
|
86
|
+
|
87
|
+
> 手順としてはそうすると
|
88
|
+
|
89
|
+
>
|
90
|
+
|
91
|
+
> 1. docker-compose up
|
92
|
+
|
93
|
+
> 2. docker-compose run web rails new . --force --no-deps --database=postgresql
|
94
|
+
|
95
|
+
>
|
96
|
+
|
97
|
+
> かと思ったのですが、1ののちアプリケーションコンテナが起動後即終了しているようです…。
|
98
|
+
|
99
|
+
|
100
|
+
|
101
|
+
`rails new` を行う前は `docker-compose up` は実行しません
|
102
|
+
|
103
|
+
`rails new` を実行し、`Gemfile` を更新してイメージをビルドし直すまでは
|
104
|
+
|
105
|
+
`docker-compose up` は失敗します
|
106
|
+
|
107
|
+
|
108
|
+
|
109
|
+
### rails new を実行する手順
|
110
|
+
|
111
|
+
|
112
|
+
|
113
|
+
1
|
114
|
+
|
115
|
+
念のため、`docker-compose down` でサービスを一通りクリアします:
|
116
|
+
|
117
|
+
|
118
|
+
|
119
|
+
```console
|
120
|
+
|
121
|
+
docker-compose down
|
122
|
+
|
123
|
+
```
|
124
|
+
|
125
|
+
|
126
|
+
|
127
|
+
2
|
128
|
+
|
129
|
+
`docker-compose run` を使い、`rails new` を実行します:
|
130
|
+
|
131
|
+
|
132
|
+
|
133
|
+
```console
|
134
|
+
|
135
|
+
docker-compose run web rails new . --force --no-deps --database=postgresql
|
136
|
+
|
137
|
+
```
|
138
|
+
|
139
|
+
|
140
|
+
|
141
|
+
このとき、`db` サービスは、
|
142
|
+
|
143
|
+
`web` サービスが起動するより先に、自動的に起動します
|
144
|
+
|
145
|
+
`web` サービスの `depends_on` で `db` サービスを指定しているためです
|
1
Update expression
test
CHANGED
@@ -1,8 +1,18 @@
|
|
1
1
|
[Quickstart: Compose and Rails | Docker Documentation](https://docs.docker.com/compose/rails/)
|
2
2
|
|
3
|
-
この手順、僕もやりましたが、説明
|
3
|
+
この手順、僕もやりましたが、上記サイトの説明は不十分で
|
4
4
|
|
5
5
|
Rails に慣れてないと行間を読んで正しい手順を踏むことができないように感じます
|
6
|
+
|
7
|
+
|
8
|
+
|
9
|
+
うまくいっていない原因は次の2 点です:
|
10
|
+
|
11
|
+
|
12
|
+
|
13
|
+
- `Gemfile` が最初の手順で作った状態のままであること
|
14
|
+
|
15
|
+
- `Dockerfile` からイメージの再ビルドが必要であること
|
6
16
|
|
7
17
|
|
8
18
|
|
@@ -30,9 +40,17 @@
|
|
30
40
|
|
31
41
|
|
32
42
|
|
33
|
-
このひと言しか書かれていませんが、
|
43
|
+
このひと言しか書かれていませんが、
|
34
44
|
|
35
|
-
最初に作った `Gemfile`
|
45
|
+
最初に作った `Gemfile` は、`rails new` で生成される `Gemfile` で置き換える必要があります
|
46
|
+
|
47
|
+
|
48
|
+
|
49
|
+
`rails new` が終わるとプロジェクトディレクトリーが作成され、
|
50
|
+
|
51
|
+
その中に `Gemfile` が生成されています
|
52
|
+
|
53
|
+
この `Gemfile` の内容で、最初に作った `Gemfile` の内容を置き換え、
|
36
54
|
|
37
55
|
イメージを作り直します
|
38
56
|
|