LoginSignup
1
0

rails7でrails newを実行するとDockerfileが上書きされてしまう...

Posted at

rails7でrails newを実行するとDockerfileが上書きされてしまう...

rails7 + docker環境を構築していた際に、Dockerfileがrails newを実行すると上書きされてしまい、環境構築がなかなか進まなかったので記録を残します。

つまずきポイント

やっと、環境構築に必要な各ファイルの作成が終わり、以下コマンドを実行した。

docker compose run --rm web rails new . --force --no-deps --database=mysql

docker compose build

この時点ではうまくいっていたため、database.ymlを書き換え、DBの作成をした。

docker compose run --rm web rails db:create

すると、ここで

docker compose run --rm web rails db:create

[+] Running 1/0
 ⠿ Container rails_test-db-1  Created                                                                                                                                                     0.0s
[+] Running 1/1
 ⠿ Container rails_test-db-1  Started                                                                                                                                                     0.3s
/rails/bin/docker-entrypoint: line 8: exec: rails: not found

rails: not foundとエラーが発生。
いろいろ調べてみた結果、Dockerfileが上書きされていたことが原因だった。
rails7ではrails newした際に、production用のDockerfileが自動生成され、上書きされてしまうのだ...
なんたる仕様。

解決方法

初期で作成するDockerfileの名前をDockerfile.devに変更
docker-compose.ymlのbuildの部分を以下に書き換え

  web: # アプリケーション名
    build:
      context: .
      dockerfile: "Dockerfile.dev" ← Dockerfile.devを参照するように変更

この状態で、以下コマンドを実行

docker compose build --no-cache

その後、自動生成されたDockerfileの名前をDockerfile.prodに変更

再度、DBをcreate

docker-compose run --rm web rails db:create

[+] Running 1/0
 ⠿ Container rails_test-db-1  Running                                                          
 
Created database 'app_development'
Created database 'app_test'

DB createできました!

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0