Rails 가이드 - Docker 추가 - 2부

얘들 아! 잘 지내고 있나요!

프로덕션 준비가 된 Rails 애플리케이션을 만드는 방법을 가르치는 시리즈의 두 번째 기사입니다. 이 문서에서는 docker 및 docker compose를 구성합니다.

도커 구성



가장 먼저 해야 할 일은 응용 프로그램의 루트 경로에 Dockerfile라는 파일을 만드는 것입니다.

다음 스니펫에는 파일 콘텐츠가 포함되어 있습니다.

FROM ruby:3.1.2-alpine3.16

RUN apk --update add postgresql-dev postgresql-client build-base tzdata libxslt-dev libxml2-dev

RUN mkdir /app

WORKDIR /app


이 파일은 애플리케이션을 실행하는 데 필요한 모든 것을 포함하는 이미지를 생성합니다. 이 이미지 도커를 만들려면 다음 단계를 따르세요.
FROM ruby:3.1.2-alpine3.16
이 줄은 docker가 dockerhub에서 다음 이미지를 다운로드하고 이를 기반으로 사용하여 다음 명령을 실행하도록 지정합니다.
RUN apk --update add postgresql-dev postgresql-client build-base tzdata libxslt-dev libxml2-dev
이 지침은 docker install에 다음 종속성을 알려줍니다.
  • build-base: 특정 gem을 컴파일할 수 있도록 하기 위해
  • tzdata: 시간대 처리
  • libxslt-dev libxml2-dev: Nokogiri 기본 종속성
  • postgresql-dev postgresql-client: Postgres 관련
  • RUN mkdir /app
    "/app"이라는 폴더를 만듭니다.
    WORKDIR /app
    도커에게 "/path"폴더가 애플리케이션의 기본 폴더임을 알립니다.

    도커 작성 구성



    docker-compose를 구성하기 위해 가장 먼저 해야 할 일은 애플리케이션의 루트 경로에 docker-compose.yml라는 파일을 생성하는 것입니다. 이 파일에는 다음 내용이 있어야 합니다.

    version: '3.9'
    
    services:
      db:
        image: postgres:14.5-alpine
        volumes:
          - ./tmp/db:/var/lib/postgresql/data
        environment:
          POSTGRES_PASSWORD: password
    
      web:
        build: .
        volumes:
          - .:/app
        tty: true
        ports:
          - "3000:3000"
        depends_on:
          - db
    


    도커 실행



    이제 모든 것이 구성되었으므로 다음 명령을 실행하여 컨테이너를 생성합니다.
    docker-compose up -d
    이 명령은 두 컨테이너를 모두 생성하고 실행합니다.

    다음 특공대를 실행하여 모든 것이 정상인지 확인할 수 있습니다.
    docker ps
    출력은 다음과 같아야 합니다.



    애플리케이션 컨테이너 안으로 들어가려면 container_id가 필요합니다. container_id를 식별하는 방법은 다음과 같습니다.



    이제 다음 명령을 실행하여 컨테이너 내부로 이동합니다.
    docker exec -it <container_id> sh

    데이터베이스 설정



    Docker 환경을 계산하기 위해 데이터베이스 구성을 업데이트해야 하며 다음 내용으로 변경해야 합니다config/database.yml.

    default: &default
      adapter: postgresql
      encoding: unicode
      pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %>
      host: <%= ENV.fetch("DATABASE_HOST", "db") %>
      user: <%= ENV.fetch("DATABASE_USERNAME", "postgres") %>
      password: <%= ENV.fetch("DATABASE_PASSWORD", "password") %>
    
    development:
      <<: *default
      database: app_development
    
    test:
      <<: *default
      database: app_test
    
    production:
      <<: *default
      database: <%= ENV.fetch("DATABASE_NAME", "app_production") %>
    


    데이터베이스를 설정하려면 다음 명령을 실행해야 합니다.

    rails db:drop
    rails db:create
    rails db:migrate
    


    서버 실행



    다음 명령을 실행하여 서버를 시작하여 모든 것이 정상인지 확인할 수 있습니다.
    rails s -b 0.0.0.0
    모든 것이 정상이면 다음과 같이 표시됩니다.



    모든 코드 변경 사항을 볼 수 있습니다here.

    좋은 웹페이지 즐겨찾기