Ruby on Rails 애플리케이션을 배포하여 생산에 대한 복잡성, 환경 구성 및 서버 설정으로 인해 발생할 수 있습니다. Docker와 컨테이너화는 격리 된, 재현 가능한 환경을 만들기 위해이 프로세스를 단순화합니다. 이 문서는 Docker를 사용하여 Rails 앱을 원활한 생산 배포하는 방법을 탐구합니다.

왜 Ruby on Rails 응용 프로그램을 컨테이너화합니까?

컨테이너화 철도 응용은 수많은 혜택을 제공합니다:

  • 조건: 앱은 개발, 시효 및 생산 전반에 걸쳐 동일한 방법을 실행합니다.
  • Scalability: 쉽게 증가된 트래픽을 처리할 수 있는 컨테이너를 스케일링.
  • Isolation: 다른 응용 프로그램과 의존성으로 충돌을 방지한다.
  • Portability: 수정 없이 환경간의 이동 응용

Rails Application에 Docker 설정

Rails 앱을 컨테이너화하려면 환경을 정의하는 Dockerfile을 생성하여 시작합니다. 이 파일은 기본 이미지, 의존성 및 앱을 실행하는 명령을 지정합니다.

샘플 Dockerfile

아래는 Rails 응용 프로그램에 대한 Dockerfile입니다.

FROM ruby:3.1.0

# Install dependencies
RUN apt-get update -qq && apt-get install -y nodejs postgresql-client

# Set working directory
WORKDIR /app

# Add Gemfile and install gems
COPY Gemfile* /app/
RUN bundle install

# Copy the rest of the application code
COPY . /app

# Precompile assets
RUN RAILS_ENV=production bundle exec rails assets:precompile

# Expose port 3000
EXPOSE 3000

# Start the server
CMD ["bundle", "exec", "puma", "-C", "config/puma.rb"]

Multi-Container Setup에 대한 Docker 컴파일

생산에 대해서는 Rails 앱과 데이터베이스와 같은 여러 컨테이너를 관리하기 위해 Docker Compose를 사용하는 것이 일반적입니다. 다음은 docker-compose.yml 파일입니다.

version: '3.8'

services:
 db:
 image: postgres:13
 environment:
 POSTGRES_USER: railsuser
 POSTGRES_PASSWORD: password
 POSTGRES_DB: railsapp_production
 volumes:
 - db_data:/var/lib/postgresql/data

 web:
 build: .
 ports:
 - "3000:3000"
 environment:
 DATABASE_URL: postgres://railsuser:password@db:5432/railsapp_production
 depends_on:
 - db

volumes:
 db_data:

생산에 배포

일단 구성, 빌드 및 컨테이너 실행:

docker-compose build
docker-compose up -d

서버 환경을 보장하는 Docker 및 Docker Compose를 지원합니다. 포트 3000의 서버 IP 주소를 통해 Rails 앱에 액세스할 수 있습니다.

관련 기사

Docker streamlines 배포를 사용하여 Ruby on Rails 애플리케이션을 컨테이너화하고 일관성을 향상시키고, 스케일링을 단순화합니다. Dockerfile을 만들고 Docker Compose를 사용하여 개발자는 철도 앱을 신뢰로 생산 환경에 효율적으로 이동할 수 있습니다.