何かやってみるブログ

興味をもったこと、趣味のこと、技術について色々書きます。

Docker初心者がDcokerでRails6 MySQLの環境構築をしてみた。

まずは、サンプルプロジェクトを作成します。

$ mkdir sample_pj
$ cd ~/sample_pj

次にDockerfileを作成していきます。

$ touch Dockerfile
FROM ruby:2.7.0   
RUN apt update -y && apt install curl 
RUN curl -sL https://deb.nodesource.com/setup_12.x | bash -
RUN apt-get install -y nodejs
RUN npm install -g yarn 
RUN mkdir /myapp
WORKDIR /myapp
COPY Gemfile  /myapp/Gemfile
COPY Gemfile.lock  /myapp/Gemfile.lock
RUN bundle install
RUN yarn install
COPY . /myapp
  • 注意!! FROM ruby:2.7.0だとエラーになる可能性があるので、ダメな場合は2.6.5で試してみてください。

次にGemfileとGemfile.lockを作成します。

# frozen_string_literal: true

source "https://rubygems.org"

git_source(:github) {|repo_name| "https://github.com/#{repo_name}" }

gem "rails", '6.0.0'

次にDockerコンテナを定義するdocker-compose.ymlを作成します。

version: '3'
services: 
  db:
    image: mysql:5.7
    volumes: 
       - db-volume:/var/lib/mysql
    environment: 
       MYSQL_ROOT_PASSWORD: password
  web:
    build: .
    command: rails s -p 3000 -b '0.0.0.0'
    volumes:
      - .:/myapp
    ports:
      - "3000:3000"
    depends_on:
      - db
volumes:
  db-volume:

これで事前準備は終了です。これからDockerで環境構築していきます。

$ docker-compose run web rails new . -f  -d=mysql

このコマンドでRailsプロジェクトを作成します。

しばらく待ちます。

終了したら、config/database.ymlを編集していきます。

default: &default
  adapter: mysql2
  encoding: utf8mb4
  pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %>
  username: root  
  password: 'password'  <-  変更
  host: db  <-  変更

ビルドします。

$ docker-compose build

そしたら、デタッチドモードで起動していきます。

$ docker-compose up -d

Railsで使用するDBを作成します。

$ docker-compose run web rails db:create

http://localhost:3000/にアクセスしてしましょう。

f:id:s-takaya1027:20200120013058p:plain
Rails

無事に環境構築できました。

下記のコマンドを打つことでコンテナを停止することができます。

$ docker-compose stop

GitHubにあげてます。確認したい方はぜひご覧ください。 github.com

Dockerの学習に以下のUdemyの講座がとても役にたちました。わかりやすいのでおすすめです。

Udemy