コンテンツにスキップ

DockerでRuby on Railsの開発をしよう

https://qiita.com/saitoeku3/items/b1aa2ae143624e551aea


Dockerfileについて

https://qiita.com/tanan/items/e79a5dc1b54ca830ac21


_

docker-compose run web bundle exec rails new . --force --database=mysql --skip-bundle

docker-compose build

docker-compose up -d
 -> localhost:3000


Dockerfile

コマンド              意味
FROM ベースとなるDockerイメージを指定
ENV 環境変数を設定
RUN shellの実行を行う
WORKDIR 起点となるディレクトリを設定 相対パスを使うときに起点になる
ADD ファイル、ディレクトリなどをコンテナの指定されたパスにコピー

docker-compose.yml

web

コマンド 意味
build コンテナを構築するDockerfileがあるディレクトリを指定
ports ポートの番号を指定
command コンテナをビルドしたときに実行するコマンド
volumes ホスト上のプロジェクト用のディレクトリを、コンテナ内の /myapp にマウントし、イメージを再構築しなくてもコードの変更が行えるようにする
depens_on リンクするサービス(ここではdb)

db

コマンド 意味
image データベースとして必要なイメージを指定 ない場合はpullしてくる
environment 環境変数を追加(ここではMySQLのパスワードを設定)
ports webとほぼ同様
volumes webとほぼ同様 

よく使うコマンド:Docker

# 今あるイメージを確認
docker images

# イメージの削除
docker rmi image_id

# コンテナの確認(-aなしだと起動中のコンテナのみ)
docker ps -a

# コンテナの削除
docker rm container_id

よく使うコマンド:Docker Compose

# コンテナをビルド
docker-compose build

# コンテナの起動
docker-compose start

# コンテナの作成&起動
docker-compose up

# コンテナの停止
docker-compose stop

# コンテナの停止&削除
docker-compose down

# bundle installを実行 うまくいかないかも?
docker-compose exec web bundle install

# db関係(例)
docker-compose exec web rails db:create

# railsコマンド(例)
docker-compose exec web rails g controller controller_name