Rails6.0のAPIモードとMySQL5.7を接続するためのDockerテンプレート
以下のように.env
に必要な項目を記述する
MYSQL_ROOT_PASSWORD={ルートパスワード}
MYSQL_DATABASE={DBの名前}
MYSQL_USER={MySQLユーザ名}
MYSQL_PASSWORD={MySQLパスワード}
MYSQL_USER=root
としてしまうと 後述のdocker-compose
時に怒られるので,避けるようにすることdocker-compose.yml
と同じ階層で作成するようにこと
docker
/docker-compose
が使えるかの確認
docker -v
docker-compose -v
docker
が使えない場合は,こちら からDocker for Desktop
をインストール
docker-compose
を使えない場合は,以下のコマンドを使用して,インストール
brew install docker-compose
※ Homebrewは事前にインストールしておいてください
api/Dockerfileを利用して,Ruby2.7環境のイメージを作成
キャッシュを反映させたくない場合は,下のコマンドを実行する
docker-compose build
# docker-compose build --no-cache
後述のdocker-compose up
時にビルドが走るので,しなくてもいい
コンテナの立ち上げ
docker-compose up
コンテナの一覧を表示する
Container ID
をコピーしておく
docker ps -a
コンテナの中に入る
docker exec -it [Container ID] bash
初回実行の際は,後述のDBの生成を必ず行うこと
コンテナを停止する(Docker for Desktop
でGUI上でコンテナやイメージを削除することも可能)
docker-compose down
コンテナを立ち上げ、コンテナの中に入ってから以下のコマンドを実行して、MySQLとの接続を行う
rails db:create
- サーバの起動
-b
で0.0.0.0
をバインドしないと,コンテナ外からアクセスできない
rails s -b 0.0.0.0
- ルーティングの確認
rails routes
- DBマイグレーション
rails db:migrate
- モジュールをインストール
bundle install
- モデルの作成
rails g model {作成したいモデル名(単数系)}
- コントローラの作成
rails g controller {作成したいコントローラ名(複数形)}
- マイグレーションファイルの作成
- 詳しい説明はこちら
rails g migration {マイグレーションのクラス名}
- MySQLへの接続
rails db
docker-compose run api {実行したRailsのコマンド}
Railsで超簡単API
https://qiita.com/k-penguin-sato/items/adba7a1a1ecc3582a9c9
RubocopはRubyのコード整形ツールで、以下のようにコードが汚い時は、指摘してくれたり、自動修正を行ってくれます
またSolargraphはRubyのコード保管ツールです
Docker環境なので、ローカル環境のターミナルで以下のコマンドを実行し、2つのツールを使用
すでにインストールしている場合は、1つ目のコマンドのみ実行
インストールしていない場合は、こちらに使い方が記載されています
brew update && brew upgrade ruby-build
brew install rbenv
rbenv install 2.7.4
rbenv global 2.7.4
gem install rubocop
gem install rubocop-performance
gem install rubocop-rails
gem install solargraph
- Ruby
- Ruby on Rails
- endwise
- ruby-rubocop
- Ruby Solargraph