#1.はじめに
2020年3月からDockerの勉強を始め、基礎を終えた後、Railsの環境構築に挑戦してみようと思ったが、思いの外、上手くいかなかったので、ここにメモを残すことにしました。誰かの参考になれば幸いです。
#2.教材
・入門 Docker
・Docker/Kubernetes 実践コンテナ開発入門(書籍)
・Docker Hubの公式イメージ
#3.開発環境
・Play with Docker
(事前にDockerHubのアカウントが必要です。)
・Ruby:2.5.3
・Ruby on rails:5.2.2
・MySQL
#4.手順
###4-1 クローンを取得
まずは、GitHubからgit cloneでアプリをクローンしておいてください。
git clone 'クローンしたいアプリのURL(GitHub参照)'
これで、作成済みのアプリをローカルディレクトリに取り込むことができました。
###4-2 Dockerfileとdocker-compose.ymlの作成
Dockerfileとdocker-compose.ymlを以下の配置になるように作成してください。
(作成済みのアプリをSampleAppと名付けています。)
SampleApp---|--app
|--bin
|--config
|--db
|--lib
|--log
|--public
|--storage
|--tmp
|--vendor
|--.gitignore
|--.ruby-version
|--Dockerfile (これを追加)
|--Gemfile
|--Gemfile.lock
|--README.md
|--Rakefile
|--config.ru
|--docker-compose.yml (これを追加)
|--package.json
また、Dockerfileとdocker-compose.ymlの中身は以下のようになります。
FROM ruby:2.5.3
RUN apt-get update -qq && apt-get install -y build-essential libpq-dev node.js
RUN mkdir /myapp
WORKDIR /myapp
COPY Gemfile /myapp/Gemfile
COPY Gemfile.lock /myapp/Gemfile.lock
RUN bundle install
COPY . /myapp
version: '3'
services:
db:
image: mysql
environment:
MYSQL_ROOT_PASSWORD: password
MYSQL_DATABASE: root
command: --default-authentication-plugin=mysql_native_password
web:
build: .
command: bundle exec rails s -p 3000 -b '0.0.0.0'
volumes:
- .:/myapp
ports:
- "3000:3000"
depends_on:
- db
これで、実行する準備は完了です。
###4-3 実行
アプリのディレクトリ内で以下のコマンドを実行してください。
$ docker-compose build
$ docker-compose up -d
$ docker-compose run web rake db:create
$ docker-compose run web rake db:migrate
完了です。
#5. 最後に
何か間違えているところがあれば、ご指摘ください。
#6. 参考記事
既存のRailsアプリにDockerを導入する手順
railsの環境構築 その1
プログラム好き大学生のDocker+Ruby on rails5で環境構築とgitの設定(初心者向け)