Containerisierung von Ruby auf Rails Anwendungen mit Docker für Production Deployment

Die Bereitstellung von Ruby on Rails-Anwendungen in der Produktion kann aufgrund von Abhängigkeiten, Umgebungskonfigurationen und Server-Setup komplex sein. Die Containerisierung mit Docker vereinfacht diesen Prozess durch die Erstellung isolierter, reproduzierbarer Umgebungen. Dieser Artikel untersucht, wie eine Rails-App mit Docker für eine nahtlose Bereitstellung in der Produktion containerisiert werden kann.

Warum Ruby auf Rails-Anwendungen Containerisieren?

Containerizing Rails Anwendungen bieten zahlreiche Vorteile:

Einrichtung von Docker für eine Rails-Anwendung

Um eine Rails-App zu containerisieren, erstellen Sie zunächst eine Dockerdatei, die die Umgebung definiert. Diese Datei gibt das Basisbild, Abhängigkeiten und Befehle zum Ausführen der App an.

Proben-Dockerfile

Nachfolgend finden Sie ein Beispiel für eine Anwendung von 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"]

Konfigurieren von Docker Compose für Multi-Container-Setup

Für die Produktion ist es üblich, Docker Compose zu verwenden, um mehrere Container zu verwalten, wie z. B. die Rails-App und die Datenbank.

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:

Einsatz in die Produktion

Nach der Konfiguration erstellen und ausführen Ihrer Container:

docker-compose build
docker-compose up -d

Stellen Sie sicher, dass Ihre Serverumgebung Docker und Docker Compose unterstützt.Sie können dann über die IP-Adresse des Servers auf Port 3000 auf Ihre Rails-App zugreifen.

Schlussfolgerung

Die Containerisierung von Ruby on Rails-Anwendungen mit Docker optimiert die Bereitstellung, erhöht die Konsistenz und vereinfacht die Skalierung. Durch die Erstellung einer Dockerdatei und die Verwendung von Docker Compose können Entwickler ihre Rails-Apps mit Sicherheit effizient in Produktionsumgebungen verschieben.