Інженерний дизайн та аналіз
Контейнеризація рубі на застосувань з докером для виробництва
Table of Contents
Розгортання 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 у виробничі середовища з впевненістю.