Table of Contents
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를 사용하여 개발자는 철도 앱을 신뢰로 생산 환경에 효율적으로 이동할 수 있습니다.