Cómo configurar un entorno de desarrollo Rails con Docker

Hacer funcionar el código de una aplicación Rails no debería ser difícil. Sin embargo, los desarrolladores pasan horas solucionando problemas de entorno. Docker resuelve esto.

¿Por qué Docker para Desarrollo?

  • Entornos consistentes - Funciona igual en cada máquina
  • Incorporación fácil - Los nuevos devs ejecutan un comando
  • Dependencias aisladas - Sin conflictos con otros proyectos
  • Paridad con producción - Desarrolla en un entorno similar a producción

Configuración Básica

Crea un Dockerfile:

FROM ruby:3.2

RUN apt-get update -qq && apt-get install -y nodejs postgresql-client

WORKDIR /app

COPY Gemfile Gemfile.lock ./
RUN bundle install

COPY . .

CMD ["rails", "server", "-b", "0.0.0.0"]

Crea un docker-compose.yml:

version: '3.8'

services:
  db:
    image: postgres:15
    environment:
      POSTGRES_PASSWORD: password
    volumes:
      - postgres_data:/var/lib/postgresql/data

  web:
    build: .
    command: bash -c "rm -f tmp/pids/server.pid && rails server -b 0.0.0.0"
    volumes:
      - .:/app
    ports:
      - "3000:3000"
    depends_on:
      - db
    environment:
      DATABASE_URL: postgres://postgres:password@db/app_development

volumes:
  postgres_data:

Ejecutando Tu App

docker compose build
docker compose up

Visita http://localhost:3000 y estarás listo para desarrollar.

Consejos

  • Usa montajes de volumen para recarga de código en vivo
  • Agrega Redis, Sidekiq según sea necesario
  • Crea un script bin/docker-dev para comandos comunes

Docker elimina el problema de “funciona en mi máquina” y permite que tu equipo se enfoque en construir características.