rails+postgresql의 Docker 구축을 공식대로 했는데 아무것도 가지 않았기 때문에 일부 수정했다

전제



macOS Catalina
Mac용 Docker 2.3.0.5

공식



Quickstart: Compose and Rails

코드



Dockerfile



공식대로의 기술로 해 가면 갑자기 여러가지 에러가 되었기 때문에, 구그는 부족한 것 추가했습니다.
그 외 공식 루비는 버전 2.5이지만 2020/11/1 최신 2.7.2로 만들었습니다.

공식
FROM ruby:2.5
RUN apt-get update -qq && apt-get install -y nodejs postgresql-client
RUN mkdir /myapp
WORKDIR /myapp
COPY Gemfile /myapp/Gemfile
COPY Gemfile.lock /myapp/Gemfile.lock
RUN bundle install
COPY . /myapp

# Add a script to be executed every time the container starts.
COPY entrypoint.sh /usr/bin/
RUN chmod +x /usr/bin/entrypoint.sh
ENTRYPOINT ["entrypoint.sh"]
EXPOSE 3000

# Start the main process.
CMD ["rails", "server", "-b", "0.0.0.0"]


FROM ruby:2.7.2
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
RUN apt-get update -qq && apt-get install -y nodejs postgresql-client yarn
# 以下同じ

Gemfile



공식적으로 rails의 버전은 5입니다만, 2020/11/1 최신의 6으로 했습니다

공식
source 'https://rubygems.org'
gem 'rails', '~>5'


source 'https://rubygems.org'
gem 'rails', '~> 6.0.3', '>= 6.0.3.4'

docker-compose.yml



공식이나 다른 기사대로 해도 왠지 DB가 영속화되지 않고 마음이 부러졌습니다만, 이쪽의 방법으로 해결했습니다.
htps : // 기주 b. 코 m / 두 c r / 코 m 포세 / 이스에 s / 5012 # 이스에 코멘 t-316518185

(공식) docker-compose.yml
version: "3"
services:
  db:
    image: postgres
    volumes:
      - ./tmp/db:/var/lib/postgresql/data
    environment:
      POSTGRES_PASSWORD: password
  web:
    build: .
    command: bash -c "rm -f tmp/pids/server.pid && bundle exec rails s -p 3000 -b '0.0.0.0'"
    volumes:
      - .:/myapp
    ports:
      - "3000:3000"
    depends_on:
      - db



docker-compose.yml
version: '3'
services: 
  db:
    image: postgres
    environment:
      POSTGRES_USER: postgres
      POSTGRES_PASSWORD: password
      PGDATA: /var/postgres_data # 追加
    volumes: 
      - ./tmp/db:/var/postgres_data # 修正
    ports:
      - "5432:5432"
  web: # 同じ

※프런트를 React등의 port가 3000의 것으로 작성하는 경우는, 경합을 피하기 위해(때문에)ports: "3001:3000"하여 rails 서버에 접속할 때는 3001을 지정합니다.
(or 앞면의 포트 변경)

절차



기본적인 순서는 이쪽의 동영상이 알기 쉬웠으므로 참고로 해 주세요.
【rails 환경 구축】docker + rails + mysql 로 환경 구축(초보자라도 30분에 완료!)
※이쪽의 동영상은 postgresql이 아닌 mysql에서 rails5, ruby2.5입니다

DB 연결



※컨테이너 기동하고 있지 않으면 연결되지 않습니다

Name 자유User docker-compose.yml의 POSTGRES_USER에 기술 된 것을 설정Password docker-compose.yml의 POSTGRES_PASSWORD에 기술 된 것을 설정Database myapp/config/database.ymldevelopment:database 에 기술되고 있는 것을 설정

좋은 웹페이지 즐겨찾기