Closed11

docker-compose で Ruby on Rails の環境を作る

jjuunnonjjuunnon

Copilot Chat に聞いてみる

VS CodeにChatが追加されていることに気がついたので聞いてみた




適当英語で聞いたら日本語で返されたでござる

jjuunnonjjuunnon

バージョン古い?

FROM ruby:2.7.2って古くないか?
Rubyのダウンロードページでは3.2.2が安定版で2.7.6がEOLらしい
ベースイメージはruby:3.2.2-bullseyeにしてみる

Railsのバージョンもgem 'rails', '~>6'と6系を指定してるが、最新の7.1.2にする。

jjuunnonjjuunnon

不思議に思いながらも辿ってみた

9.再度Dockerイメージをビルドしますとか絶対必要ないよなーと思いながらも素直にやってみる

8番まで終わってわかった。rails newでDockerfileが作成されてる。さっきまでのDockerfileどこいった…。
rails newのブラックボックスは一旦受け入れて進める

jjuunnonjjuunnon

ポスグレにパスワードを設定していない

Error: Database is uninitialized and superuser password is not specified.
You must specify POSTGRES_PASSWORD to a non-empty value for the
superuser. For example, "-e POSTGRES_PASSWORD=password" on "docker run".

書いてあるとおり。docker-compose.ymlで環境変数を渡してあげる

jjuunnonjjuunnon

secret_key_base がない

/usr/local/bundle/ruby/3.2.0/gems/railties-7.1.2/lib/rails/application.rb:655:in `validate_secret_key_base': Missing `secret_key_base` for 'production' environment, set this string with `bin/rails credentials:edit` (ArgumentError)
       raise ArgumentError, "Missing `secret_key_base` for '#{Rails.env}' environment, set this string with `bin/rails credentials:edit`"

これも書いてあるとおり。RAILS_ENV=developmentにしてあげる

jjuunnonjjuunnon

ポスグレに接続できていない?

ActiveRecord::ConnectionNotEstablished (connection to server on socket "/var/run/postgresql/.s.PGSQL.5432" failed: No such file or directory
        Is the server running locally and accepting connections on that socket?
):

ローカルのソケットからアクセスしに行ってるようだがdbコンテナに接続しないといけないはず。
config/database.yml内のhost: dbが効いてない?

コンテナ内に入ってdatabase.ymlを見てみた。手順10の変更が反映されていない。
よくみるとカレントディレクトリが/railsになっている。マウントしているのは/myappなのでそりゃそうだ。

docker-compose.ymlを編集し、/railsにマウントしてみると無事railsの初期画面が表示された。

このスクラップは2023/12/21にクローズされました