Files
Reem-Notas/docker-compose.yml

38 lines
1.4 KiB
YAML

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"
# No boot/deploy, em ordem:
# 1. 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).
# 2. whenever --update-crontab — grava no crontab os jobs do config/schedule.rb
# (ex.: atualizar histórico a cada 30 min, 08h-18h).
# 3. cron — sobe o daemon de cron (em background) que executa esses jobs.
# As variáveis de ambiente do banco vêm do .env via dotenv-rails quando
# o rake carrega o Rails, então o cron não precisa herdar o ENV.
# 4. rails s — sobe a aplicação (processo em primeiro plano).
command: bash -c "rm -f tmp/pids/server.pid && bundle exec rails db:prepare && bundle exec whenever --update-crontab && cron && 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: