Lチカ開発ブログ

https://l-chika.com/の開発ブログ

Docer & Mysql & Rails APIモード

ローカルにdockerを利用して、RailsAPIモード環境を構築。

作業ディレクトリ・Gemfileの作成

$ mkdir api-app && cd $_
$ bundle init
Writing new Gemfile to /{WORK_PATH}/api-app/Gemfile

Gemfile

$ vim Gemfile
source "https://rubygems.org"
gem 'rails', '5.1.4'

Docker

Dockerfile

FROM ruby:2.4.2
RUN apt-get update -qq && apt-get install -y build-essential libmysqlclient-dev
RUN mkdir /api-app
WORKDIR /api-app
ADD Gemfile /api-app/Gemfile
ADD Gemfile.lock /api-app/Gemfile.lock
RUN bundle install
ADD . /api-app

docker-compose.yml

$ vim docker-compose.yml
version: '3'
services:
  db:
    image: mysql
    environment:
      MYSQL_ROOT_PASSWORD: password
  web:
    build: .
    command: bundle exec rails s -p 3000 -b '0.0.0.0'
    volumes:
      - .:/api-app
    ports:
      - "3000:3000"
    depends_on:
      - db

MYSQL_ROOT_PASSWORDerror: database is uninitialized and password option is not specified You need to specify one of MYSQL_ROOT_PASSWORD, MYSQL_ALLOW_EMPTY_PASSWORD and MYSQL_RANDOM_ROOT_PASSWORD が発生するため

Rails

rails new

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

database.yml変更

$ vim config/database.yml
default: &default
  adapter: mysql2
  encoding: utf8
  pool: 5
  username: root
  password: password
  host: db

実行

$ docker-compose build
$ docker-compose up

db作成

別なターミナルで実行

$ docker-compose run web rake db:create

http://0.0.0.0:3000/ で確認。

参考

Docker

Docker

docs.docker.com

easyramble.com

qiita.com