どうもこんにちは、ごっちです。
windowsでmastodonを動かしてみようとした話 でやろうと思っていたDockerの勉強。ようやく着手。
今回はRailsプロジェクトをNewするところからやってみようと思ったのです。
公式の QuickStart を参考に進めていきますよ。
プロジェクト用のディレクトリを用意します。今回のプロジェクト名は /myapp
とします。 myapp
ディレクトリを作ります。
Dockerfile
を用意します。今回は ruby 2.4.1
を使おうと思います。
コマンドか何かで Dockerfile
ファイル作って、以下を記述します。
FROM ruby:2.3.3
RUN apt-get update -qq && apt-get install -y build-essential libpq-dev nodejs
RUN mkdir /myapp
WORKDIR /myapp
ADD Gemfile /myapp/Gemfile
ADD Gemfile.lock /myapp/Gemfile.lock
RUN bundle install
ADD . /myapp
Gemfile
を用意します。その中で Rails のバージョンも指定しますよ。
コマンドか何かで Gemfile
ファイルを作って、以下を記述します。
source 'https://rubygems.org'
gem 'rails', '5.1.0'
Rails 5.1.0
を使おうと思います。ついてに Gemfile.lock
ファイルもコマンドか何かで作っておきます。
docker-compose.yml
を用意します。 もろもろ設定やコマンドを記述します。
コマンドか何かで docker-compose.yml
ファイルを作って、以下を記述します。
version: '2'
services:
db:
image: postgres
web:
build: .
command: bundle exec rails s -p 3000 -b '0.0.0.0'
volumes:
- .:/myapp
ports:
- "3000:3000"
depends_on:
- db
ここで rails new
でRailsプロジェクトを一気に作ります。
$ docker-compose run web rails new . --force --database=postgresql --skip-bundle
...
今回はPostgreSQLを使用します。んで、もろもろ処理が終わると さっき作った Gemfile
の中身も充実したかと思います。
config/database.yml
でDB設定をします。
なにも変なことをしていなければ、以下の書き方で動くと思います。
default: &default
adapter: postgresql
encoding: utf8
charset: utf8
timeout: 5000
pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %>
development:
<<: *default
database: myapp_development
username: postgres
password:
host: db
####
test
, production
環境で使用する場合はそれに応じた設定をします。
ビルドします
$ docker-compose build
上記コマンドは、 Gemfile
を書き換えるたびにする必要があります。
以下のコマンドでRailsサーバの起動をします。
$ docker-compose up
myapp_db_1 is up-to-date
myapp_web_1 is up-to-date
Attaching to myapp_db_1, myapp_web_1
web_1 | => Booting Puma
web_1 | => Rails 5.1.0 application starting in development on http://0.0.0.0:3000
web_1 | => Run `rails server -h` for more startup options
...
こんな感じで動いていそうであれば成功です。
今の状態ではテーブルは何もないけれども、作っておきます。
$ docker-compose run web rake db:create
さて、もろもろセットアップが終わったところでブラウザでの確認をします。
http://localhost:3000
にアクセスします。
こんな感じに表示されれば成功です!やりました!!うれしい!
windowsでmastodonを動かしてみようとした話 の残骸が残っていたので、 docker-compose up
するときに衝突してしまってあら大変。
Dockerイメージとコンテナの削除方法 を参考にMastodonのコンテナとイメージを削除しました。
マシンが若干暴走して再起動が走ってしまってログが残っていない。悲しい
docker ps -a
でコンテナを確認して、 docker rm [コンテナID]
で該当のコンテナを削除します。
docker images
でDockerイメージを確認して、 docker rmi [イメージID]
でDockerイメージを削除します。
- Quickstart: Compose and Rails, https://docs.docker.com/compose/rails/
- Dockerイメージとコンテナの削除方法, http://qiita.com/tifa2chan/items/e9aa408244687a63a0ae
- windowsでmastodonを動かしてみようとした話(微妙に失敗), https://medium.com/@gggooottto/windows%E3%81%A7mastodon%E3%82%92%E5%8B%95%E3%81%8B%E3%81%97%E3%81%A6%E3%81%BF%E3%82%88%E3%81%86%E3%81%A8%E3%81%97%E3%81%9F%E8%A9%B1-%E5%BE%AE%E5%A6%99%E3%81%AB%E5%A4%B1%E6%95%97-fbd721303bdc
- library/ruby, https://hub.docker.com/_/ruby/
- YutaGoto/rails_docker, https://github.com/YutaGoto/rails_docker