Rails on Docker 導入フロー
Develop Rails on Docker / Mac M1 (多分Win その他でも同じ) 2022.01.01~
Why This?
M1環境でRails5系 + Ruby2系で MySQLまわりのbundleエラーが出る
Rails6~ + Ruby3系だと出ない
OSやローカルに依存せず、汎用的なRailsダウングレード環境をM1で構築したい
Rails on Docker
構築からテストファイルルーティングまで
Note
新規RailsをDockerで作成(8度目くらいのリトライ、いつもどこかで改修出来ないバグが出る)
環境
M1 Mac
Homebrew、rbenv、nodenv->voltaなどは設定済
Tree Now First Commit
新規作成ファイル内訳
Gemfile
Railsバージョン指定
Dockerfile
docker-compose.yml
開発IPパス
DB領域
パス
SQL
password
Rails環境作成 use MySQL
?: なにか分からないので一旦無視
bundle exec spring binstub --all
エラー
gem install mysql2 -v '0.5.3'
?
いったん無視
ローカル上はこれは解消しなかった
初期設定
イメージのbuild、取り込み
出たエラー
ERROR: Service 'web' failed to build : Build failed
対応 = 実際はやっていなく、 無視して
docker-compose build
を再実行docker-compose run web bundle update
DB設定
database.ymlの設定
パスワード # TODO: 本格開発時は再設定し、envなどで個人で隠蔽する
ホスト
コマンド
現在のディレクトリにある、docker-compose.ymlに基づいて、コンテナーを起動するコマンド:
確認:
bundle exec rake
Rails環境にインストールされているrakeコマンドを実行
rake db:create = Railsで使用するデータベースをMYSQLサーバ上に作成してくれます
bundle exec以降が実行コマンド
rake db:create=まだデーターがない時にDBを作成するコマンド
Docker
起動
docker-compose up -d
Stop
docker-compose stop
削除(再度立ち上げれば戻るので大丈夫)
docker-compose down
注意点
起動
-d
無しだと起動ログの監視から外れ、再起動時にpidエラーが出るかもdocker-compose up
対応
rm tmp/pids/server.pid
ブラウザ確認:
http://localhost:3333/
他とかぶらないた対策で3333にしている
起動時にシェルでserver.pidを消す設定
docker-compose.yml
---
掲示板を作成する基盤
必要な作成ファイル
コントローラー
アクション
ルーティング
HTML
コントローラーとアクション
app/controllers/boards_controller.rb
ルーティング
config/routes.rb
HTML
app/views/boards/index.html.erb
最終更新