Å avsette Ruby on Rails-applikasjoner til produksjon kan være kompleks på grunn av avhengigheter, miljøkonfigurasjoner og serveroppsett. Containerisering med Docker forenkler denne prosessen ved å skape isolerte, reproducerbare miljøer. Denne artikkelen utforsker hvordan du beholder en Rails-app ved hjelp av Docker for sømløs produksjonsutplassering.

Hvorfor kontainere Ruby på jernbaner applikasjoner?

Containerizing Rails-applikasjoner tilbyr mange fordeler:

  • Konsistens: sikrer at appen kjører på samme måte på tvers av utvikling, stealing og produksjon.
  • Scalability: Lett å skalere beholdere til å håndtere økt trafikk.
  • Isolasjon: Unngå konflikter med andre programmer og avhengigheter på serveren.
  • Portabilitet: Flytte programmer mellom miljøer uten modifikasjon.

Sette opp Docker for en jernbaneapplikasjon

Hvis du vil containere en Rails-app, starter du med å opprette en Dockerfil som definerer miljøet. Denne filen angir basisbildet, avhengighetene og kommandoene for å kjøre appen.

Prøve Dockerfile

Nedenfor er et eksempel Dockerfil for en Rails-applikasjon:

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

Konfigurasjon av Docker Komponer for flerinneholdsoppsett

For produksjon er det vanlig å bruke Docker Composite til å administrere flere beholdere, som Rails-appen og databasen. Her er et eksempel docker-compose.yml-fil:

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:

Utsettelse til produksjon

Når du har konfigurert, bygge og kjøre beholdere:

docker-compose build
docker-compose up -d

Sørg for at servermiljøet støtter Docker og Docker Composite. Du kan deretter få tilgang til Rails-appen via serverens IP-adresse på port 3000.

Konklusjon

Beholder Ruby on Rails-applikasjoner med Docker strømlinjeformer distribusjonen, forbedrer konsistensen og forenkler skalering. Ved å opprette en Dockerfil og bruke Docker Composite, kan utviklere effektivt flytte sine Rails-apper til produksjonsmiljøer med tillit.