2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

ruby3.0 rails6.1 postgresql + redisなdocker環境を構築する

Posted at

ruby:latest使ってるので
当然最新rubyになりますが、、、笑

redisはおまけ,
自分はsidekiqに使うので入れておきました。
いらなかったら消してください。

ディレクトリ構造

app
├─ Dockerfile
├─ Gemfile  
├─ Gemfile.lock
└─ docker-compose.yml
   

各ファイルの中身

Dockerfile

FROM ruby:latest

RUN 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 -qq && apt-get install -y \
  nodejs \
  yarn \
  imagemagick \
  build-essential \
  libpq-dev \
  postgresql-client

WORKDIR /app

COPY Gemfile Gemfile.lock /app/

RUN bundle install

docker-compose.yml

version: '3'

volumes:
  db-data:
  redis:
  bundle:
  node_modules:

services:
  web:
    build: .
    command: >
      bash -c "rm -f tmp/pids/server.pid &&
               bundle exec rails s -p 3000 -b '0.0.0.0'"
    ports:
      - '3000:3000'
    volumes:
      - '.:/app'
      - 'bundle:/usr/local/bundle:cached'
      - 'node_modules:/app/node_modules'
      - '/app/vendor'
      - '/app/tmp'
      - '/app/log'
      - '/app/.git'
    environment:
      - 'DATABASE_PASSWORD=postgres'
    tty: true
    stdin_open: true
    depends_on:
      - db
      - redis
    links:
      - db
  
  db:
    image: postgres
    environment:
      - 'POSTGRES_USER=postgres'
      - 'POSTGRES_PASSWORD=postgres'
    volumes:
      - 'db-data:/var/lib/postgresql/data'
  
  redis:
    image: redis:latest
    command: redis-server
    ports:
      - 6379:6379
    volumes:
      - redis:/data

node_modules,vendor,tem,log,.gitはup高速化のためvolumeを作成しました。

Gemfile

source 'https://rubygems.org'
gem 'rails', '~> 6.1'

Gemfile.lock

# 何も書かないでね

アプリ立ち上げ

appディレクトリにて以下のコマンドでapp立ち上げ

rspec使うので skip-testしてますがそこら辺はお好みで!
--forceは強制上書き、
--no-depsはリンクしたサービスを起動しない設定。
--webpackerはwebpacker:installをやってくれます。

docker-compose run web rails new . --force --no-deps --database=postgresql --skip-test --webpacker

webpackerがインストールできました!
となれば成功です。

次にdatabase.ymlを修正しましょう。

database.yml

default: &default
  adapter: postgresql
  encoding: unicode
  host: db
  user: postgres
  port: 5432
  password: <%= ENV.fetch("DATABASE_PASSWORD") %>
  pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %>

development:
  <<: *default
  database: product_register_development

test:
  <<: *default
  database: product_register_test

production:
  <<: *default
  database: product_register_production
  username: product_register
  password: <%= ENV['PRODUCT_REGISTER_DATABASE_PASSWORD'] %>

修正したら、db:createを実行

docker-compose run web rake db:create

createできました!
となったら

docker-compose up

でcontainerとserver立ち上げて成功です!

docker-compose exec web bash

でコンテナ入って確認してみましょう。
※僕はtest_appという名前でアプリを作成しました。

スクリーンショット 2021-01-27 19.30.14.png

CMDとかENTRYPOINTとかcommand:とかvolume:とかcontainer_name:とか好きにカスタマイズしてください。

日々精進。

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

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?