ruby3.0 rails6.1 postgresql + redis docker 환경 구축

ruby : latest 사용하고 있기 때문에
당연히 최신 루비가되지만,,,

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 가속화를 위해 볼륨을 만들었습니다.

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라는 이름으로 앱을 만들었습니다.



CMD라든지 ENTRYPOINT라든지 command:라든지 volume:라든지 container_name:라든지 좋아하게 커스터마이즈 해 주세요.

매일 정진.

좋은 웹페이지 즐겨찾기