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

新規作成ファイル内訳

.
├── Dockerfile
├── Gemfile
├── Gemfile.lock(カラファイル)
├── README.md(This)
└── docker-compose.yml

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

http://localhost:3333/

最終更新

役に立ちましたか?