コンテナ関連
コンテナの作成
docker-compose build
コンテナの中身を削除
docker-compose down
コンテナの起動(web serverの起動)
docker-compose.ymlを使って起動します
構文
docker-compose up [option] [service名]
通常起動
docker-compose up
rails(サービス名)起動
docker-compose up rails
バックグラウンドで実行
docker-compose up -d docker-compose up -d rails
buildも実行
docker-compose up -build
buildをしない
docker-compose up -no-build
コンテナ起動関連
docker-compose start docker-compose stop #Gemfileの更新をしたら、実施する docker-compose restart
コンテナのタイムアウトを秒指定
docker-compose up -t
サービスの数を指定
docker-compose up -scale SERVICE=サービス数
データベース関連
データベースを作成するコマンド
docker-compose run web bundle exec rake db:create
モデルを追加するコマンド
docker-compose run web bundle exec rails g model task user:references name:string cotent:text
モデルを削除したいときのコマンド
docker-compose run web bundle exec rails destroy model task
モデルにカラムを追加するには?
docker-compose run web bundle exec rails g migration AddYYYToXXX カラム名:データ型 (XXXはテーブル名、YYYはカラム名)
docker-compose run web bundle exec rails g migration AddDetailsToLists event:text respect:text disdain:text boss:text guidance:text
複数追加のときはAddDetailsToListsのようにカラム名は任意で良い(単体の場合は追加したいカラム名)
↑のようにマイグレーションファイルが生成される
マイグレートする
docker-compose run web bundle exec rake db:migrate
↑のようにマイグレート成功していればOK!
データベースを削除する場合はこうする
class CreateMacs < ActiveRecord::Migration[5.1] def change drop_table :macs end end
マイグレートするためのコマンド
docker-compose exec web bundle exec rake db:migrate
1つ前にロールバックしたいときのコマンド
docker-compose exec web bundle exec rails db:rollback
seedファイルを使う時
まずはリセット
docker-compose run web bundle exec rails db:migrate:reset
データベース上にサンプルユーザーを生成する
docker-compose run web bundle exec rails db:seed
コントローラー関連
Docker環境下でのコントローラ作成方法(コントローラは複数形で記述します)
docker-compose exec web rails g controller tasks create destroy
ビューファイルを生成したくない時(–skip-template-engine: ビューファイルをスキップする設定)
docker-compose exec web rails g controller macs create destroy --skip-template-engine
コントローラーを削除したいとき
docker-compose exec web rails destroy controller tasks
デバッグ関連(実用例含む)
サーバーを起動(-dでバックグラウンドにする)
docker-compose up -d
接続するコンテナを確認するコマンド
docker ps
コンテナに接続するコマンド
docker attach lifehack_web_1
newメソッドにbinding.pryを追加
class TasksController < ApplicationController def new @task = Task.new binding.pry end end
http://localhost:3000/tasks/newを開くかリロードして
ターミナルが↑のような表示になったらOK
@taskにいろいろ値を入れてみる
@task.title = 'task1' @task.content = 'content' @task.priority = 3
exitでデバッガーから抜けると
先程入力したオブジェクトがフォームにセットされた!
使い終わったらnewメソッドのbinding.pryを消して
class TasksController < ApplicationController def new @task = Task.new end end
コントロールキー^を押しながらp,qの順に押すとアタッチが解除できる!