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

回答編集履歴

3

Fix answer

2020/07/24 07:27

投稿

y_shinoda
y_shinoda

スコア3272

answer CHANGED
@@ -1,45 +1,35 @@
1
- ## 元の回答
1
+ ## 追記
2
2
 
3
- [Quickstart: Compose and Rails | Docker Documentation](https://docs.docker.com/compose/rails/)
4
- この手順、僕もやりましたが、上記サイトの説明は不十分で
5
- Rails に慣れてないと行間を読んで正しい手順を踏むこときないように感じま
3
+ (psc の自己解決より、WSL あり、絶対パスにすることで解決ることを受けて調査しました)
6
4
 
7
- うまいっていない原因は次2 です:
5
+ おそら Windows 10 Windows 17.09 以前に起因する問題のようです
6
+ Windows 10 の Windows Update を行うことでこの問題は起きなくなるようです
7
+ 参考: [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)
8
8
 
9
- - `Gemfile` が最初の手順で作った状態のままであること
10
- - `Dockerfile` からイメージ再ビルドが必要こと
9
+ Windows 10 17.09 以前 WSL 環境動作させためには、
10
+ 次のような方法があるようです
11
+ [Docker-compose and incorrect absolute paths for volumes · Issue #1854 · microsoft/WSL](https://github.com/microsoft/WSL/issues/1854#issuecomment-291845122)
11
12
 
12
- `rails new` を実行しましたか?
13
-
14
13
  ```console
14
+ sudo mkdir /c
15
- docker-compose run web rails new . --force --no-deps --database=postgresql
15
+ sudo mount --bind /mnt/c /c
16
+ cd /c/path/to/project
17
+ docker-compose ...
16
18
  ```
17
19
 
18
- 最初に `Dockerfile` をビルドしてできるイメージは
19
- `rails new` するためだけものになります
20
+ ## 回答
20
21
 
21
- > Next, create a bootstrap Gemfile which just loads Rails.
22
+ 今、手元で、この質問欄にある `docker-compose.yml`, `Dockerfile`, `Gemfile` と、
22
- > It’ll be overwritten in a moment by rails new.
23
+ 空の `Gemfile.lock`, それから Quickstart にある `enrtypoint.sh` を使って
24
+ 質問欄のコマンドを実行したところ、こちらでは正常にファイルが生成できました
23
25
 
24
- このひと言しか書かれていませんが、
25
- 最初に作っ `Gemfile` は`rails new` で生成され `Gemfile` 置き換える必要があります
26
+ ログを見ところ、rails new 自体は正常に動作していようなの
27
+ あとは出力されたファイルがどこにいってしまっているかだけだと思います
26
28
 
27
- `rails new` が終わるとプロジェクトディレクトリーが作成さ
29
+ いずかのファイルをこの質問欄に書いてある状態から変更していないでしょうか?
28
- その中`Gemfile`生成されています
30
+ docker-compose.yml怪し気がしますが、
29
- この `Gemfile` の内容で、最初に作った `Gemfile` の内容を置き換え、
30
- イメージを作り直ます
31
+ そこにこだわらず色々確認てみてください
31
32
 
32
- > Now that you’ve got a new Gemfile,
33
- > you need to build the image again.
34
- > (This, and changes to the Gemfile or the Dockerfile,
35
- > should be the only times you’ll need to rebuild.)
36
-
37
- ```console
38
- docker-compose build
39
- ```
40
-
41
- ## 追記
42
-
43
33
  > コンテナを起動後、コンテナ内でrails new するということでしょうか?
44
34
  > 手順としてはそうすると
45
35
  >

2

Add second expression

2020/07/24 07:27

投稿

y_shinoda
y_shinoda

スコア3272

answer CHANGED
@@ -1,3 +1,5 @@
1
+ ## 元の回答
2
+
1
3
  [Quickstart: Compose and Rails | Docker Documentation](https://docs.docker.com/compose/rails/)
2
4
  この手順、僕もやりましたが、上記サイトの説明は不十分で
3
5
  Rails に慣れてないと行間を読んで正しい手順を踏むことができないように感じます
@@ -34,4 +36,38 @@
34
36
 
35
37
  ```console
36
38
  docker-compose build
37
- ```
39
+ ```
40
+
41
+ ## 追記
42
+
43
+ > コンテナを起動後、コンテナ内でrails new するということでしょうか?
44
+ > 手順としてはそうすると
45
+ >
46
+ > 1. docker-compose up
47
+ > 2. docker-compose run web rails new . --force --no-deps --database=postgresql
48
+ >
49
+ > かと思ったのですが、1ののちアプリケーションコンテナが起動後即終了しているようです…。
50
+
51
+ `rails new` を行う前は `docker-compose up` は実行しません
52
+ `rails new` を実行し、`Gemfile` を更新してイメージをビルドし直すまでは
53
+ `docker-compose up` は失敗します
54
+
55
+ ### rails new を実行する手順
56
+
57
+ 1
58
+ 念のため、`docker-compose down` でサービスを一通りクリアします:
59
+
60
+ ```console
61
+ docker-compose down
62
+ ```
63
+
64
+ 2
65
+ `docker-compose run` を使い、`rails new` を実行します:
66
+
67
+ ```console
68
+ docker-compose run web rails new . --force --no-deps --database=postgresql
69
+ ```
70
+
71
+ このとき、`db` サービスは、
72
+ `web` サービスが起動するより先に、自動的に起動します
73
+ `web` サービスの `depends_on` で `db` サービスを指定しているためです

1

Update expression

2020/07/13 13:27

投稿

y_shinoda
y_shinoda

スコア3272

answer CHANGED
@@ -1,7 +1,12 @@
1
1
  [Quickstart: Compose and Rails | Docker Documentation](https://docs.docker.com/compose/rails/)
2
- この手順、僕もやりましたが、説明不十分で
2
+ この手順、僕もやりましたが、上記サイトの説明不十分で
3
3
  Rails に慣れてないと行間を読んで正しい手順を踏むことができないように感じます
4
4
 
5
+ うまくいっていない原因は次の2 点です:
6
+
7
+ - `Gemfile` が最初の手順で作った状態のままであること
8
+ - `Dockerfile` からイメージの再ビルドが必要であること
9
+
5
10
  `rails new` を実行しましたか?
6
11
 
7
12
  ```console
@@ -14,8 +19,12 @@
14
19
  > Next, create a bootstrap Gemfile which just loads Rails.
15
20
  > It’ll be overwritten in a moment by rails new.
16
21
 
17
- このひと言しか書かれていませんが、`rails new` が終わったら
22
+ このひと言しか書かれていませんが、
18
- 最初に作った `Gemfile` `rails new` で生成され `Gemfile` 置き換え
23
+ 最初に作った `Gemfile` は、`rails new` で生成され `Gemfile` 置き換える必要があります
24
+
25
+ `rails new` が終わるとプロジェクトディレクトリーが作成され、
26
+ その中に `Gemfile` が生成されています
27
+ この `Gemfile` の内容で、最初に作った `Gemfile` の内容を置き換え、
19
28
  イメージを作り直します
20
29
 
21
30
  > Now that you’ve got a new Gemfile,