LoginSignup
2
2

More than 3 years have passed since last update.

Dockerを使ってRuby2.7&Rails6を構築

Posted at

はじめに

2020/01/20時点での最新安定版のrails開発環境の構築の記事がなかったので。

【Imagemagick対応】Dockerを利用して、Rails環境を作成

基本上記の記事のままです。
ただ、上記の記事はRuby2.6&Rails5.2.2で、そのままバージョンを書き換えるだけではうまく動作しなかったので、動作できるようにしたインストール資材を記載しておきます。
参考までに上記記事からの変更点も記載しておきます。

コンテナ立ち上げ以降は参考記事の手順のまま実施できます。

インストール資材

Dockerfile

Dockerfile
FROM ruby:2.7

ENV RUNTIME_PACKAGES="linux-headers libxml2-dev libxslt-dev make gcc libc-dev nodejs tzdata postgresql-dev postgresql" \
    DEV_PACKAGES="build-base curl-dev" \
    HOME="/myapp"

WORKDIR $HOME

# Counter Measure to Error:"Autoprefixer doesn’t support Node v4.8.2. Update it"
RUN curl -sL https://deb.nodesource.com/setup_10.x | bash - \
        && apt-get install -y nodejs

# yarnパッケージ管理ツールインストール
RUN apt-get update && apt-get install -y curl apt-transport-https wget && \
    curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | apt-key add - && \
    echo "deb https://dl.yarnpkg.com/debian/ stable main" | tee /etc/apt/sources.list.d/yarn.list && \
    apt-get update && apt-get install -y yarn

RUN apt-get update && \
    apt-get install -y default-mysql-client \
    postgresql-client \
    sqlite3 \
    --no-install-recommends && \
    rm -rf /var/lib/apt/lists/*

ADD Gemfile      $HOME/Gemfile
ADD Gemfile.lock $HOME/Gemfile.lock

RUN bundle install

ADD ./ $HOME
COPY ./ $HOME

CMD ["rails", "server", "-b", "0.0.0.0"]

変更点①:ruby2.6⇒2.7

変更点②:mysql-client⇒default-mysql-client

mysql-client はインストールできなくなっていたので、代わりにdefault-mysql-clientをインストールします。
mysql-clientがインストールできない理由は以下の記事が参考になります。

Circle CI で mysql-client が apt-get install できなくなってCI環境が壊れた話

変更点③:yarnを追加でインストール

エラーメッセージは控えていませんでしたが、参考記事のままインストールしようとしたらyarnがないと怒られました。そのため、# yarnパッケージ管理ツールインストール のところでインストールしています。

docker-compose.yml

docker-compose.yml
version: '3'
services:
  db:
    container_name: db
    image: postgres:latest
    environment:
      POSTGRES_USER: root
      POSTGRES_PASSWORD: password
      POSTGRES_INITDB_ARGS: "--encoding=UTF-8"
  web:
    container_name: app
    build: .
    command: bundle exec rails s -p 3000 -b '0.0.0.0'
    volumes:
      - .:/myapp
    ports:
      - "3000:3000"
    depends_on:
      - db

変更点①:passwordありユーザーの設定

セキュリティ的にpasswordありユーザーがほしかったので、environmentのところでrootユーザにpasswordを付与しています。

Gemfile

Gemfile
source 'https://rubygems.org'

gem 'rails', '~> 6.0.2', '>= 6.0.2.1'

Imagemagickは使用しないのでGemfileから削除しています。

Gemfile.lock

Gemfile.lock

こちらは空のまま。

2
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
2
2