LoginSignup
1
2

More than 3 years have passed since last update.

Dockerを使った既存のRailsアプリの環境構築に苦労したので、メモを残してみた

Last updated at Posted at 2020-03-17

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の中身は以下のようになります。

Dockerfile
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
docker-compose.yml
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の設定(初心者向け)

1
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
2