version: '3.8'

services:
  app:
    build:
      context: .
      dockerfile: Dockerfile
    ports:
      - "3000:3000"
    env_file: .env
    environment:
      DATABASE_URL: ${DATABASE_URL}
      DB_HOST: ${DB_HOST}
      DB_PORT: ${DB_PORT}
      DB_NAME: ${DB_NAME}
      DB_USER: ${DB_USER}
      DB_PASSWORD: ${DB_PASSWORD}
      SECRET_KEY_BASE: ${SECRET_KEY_BASE}
      RAILS_ENV: ${RAILS_ENV:-development}
    volumes:
      - ".:/app"
      - "bundle_cache:/usr/local/bundle"
    # db:prepare = cria o banco se não existir, roda migrations pendentes e
    # só faz seed se o banco acabou de ser criado (idempotente, seguro no boot).
    command: bash -c "rm -f tmp/pids/server.pid && bundle exec rails db:prepare && bundle exec rails s -b 0.0.0.0"
    # O banco PostgreSQL já existe externamente.
    # Configure DB_HOST no .env com o IP/hostname do seu servidor PostgreSQL.

volumes:
  bundle_cache:
