Розгортання Ruby на Rails програми для виробництва може бути складним завдяки залежності, конфігурації середовища та налаштування сервера. Контейнеризація з Docker спрощує цей процес, створюючи ізольовані, відтворювані середовища. Ця стаття досліджує, як контейнерізувати додаток Rails за допомогою Docker для безшовного розгортання виробництва.

Чому Контейнеризация Ruby на Rails Застосування?

Контейнеризація Rails пропонує численні переваги:

  • Консистенції: Забезпечує додаток, що працює таким же чином, через розвиток, старіння та виробництво.
  • Скалбільність: Легковаговики для обробки збільшеного трафіку.
  • Isolation: Уникайте конфліктів з іншими додатками та залежностями на сервері.
  • Portable:] Перемістити додатки між середовищами без модифікації.

Налаштування Docker для Rails Застосування

Щоб контейнерізувати додаток Rails, почніть створювати Dockerfile, який визначає навколишнє середовище. Цей файл визначає базовий образ, залежностей і команд для запуску програми.

Зразок Dockerfile

Нижче наведено приклад Dockerfile для програми Rails:

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"]

Налаштування Docker Compose для багатоповерхового набору

Для виробництва, це поширене для використання Docker Compose для управління декількома контейнерами, такими як додаток Rails і бази даних. Ось приклад 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. Після цього ви можете отримати доступ до програми Rails через IP-адресу сервера на порту 3000.

Висновок

Контейнерування Ruby на Rails додатках з розгортанням потокових ліній Docker, підвищує консистенцію та спрощує масштабування. Створюючи Dockerfile та використовуючи Docker Compose розробники можуть ефективно переміщати свої додатки Rails у виробничі середовища з впевненістю.