Correção de horario e implantação da geração de Romaneio
This commit is contained in:
@@ -17,27 +17,30 @@ services:
|
||||
DB_PASSWORD: ${DB_PASSWORD}
|
||||
SECRET_KEY_BASE: ${SECRET_KEY_BASE}
|
||||
RAILS_ENV: ${RAILS_ENV:-development}
|
||||
# Fuso do SISTEMA OPERACIONAL dentro do container (o do Rails vem do
|
||||
# config.time_zone). Já fixado no Dockerfile; repetido aqui para dar o
|
||||
# ajuste sem rebuild — basta TZ=... no .env. Ver deploy/ntp-seguro.sh:
|
||||
# a HORA em si é do host, isto aqui só define o fuso de leitura.
|
||||
TZ: ${TZ:-America/Sao_Paulo}
|
||||
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).
|
||||
# O passo do cron é "best-effort": se o crontab/cron não estiver disponível
|
||||
# (ex.: imagem antiga sem o pacote `cron`), apenas avisa no log e SEGUE —
|
||||
# nunca impede o Rails de subir. (Requer rebuild: docker compose up -d --build)
|
||||
# `bundle check || bundle install`: os gems ficam num VOLUME nomeado
|
||||
# (bundle_cache) que persiste e SOMBREIA os gems da imagem — então adicionar
|
||||
# uma gem nova ao Gemfile não chega no container só com `up`/`--build`. Este
|
||||
# passo instala o que faltar no volume no boot (idempotente e rápido quando já
|
||||
# está tudo instalado), evitando o Bundler::GemNotFound ao subir.
|
||||
command: bash -c "rm -f tmp/pids/server.pid && (bundle check || bundle install) && bundle exec rails db:prepare && { bundle exec whenever --update-crontab && cron || echo '[boot] AVISO cron/crontab indisponivel (rode com --build), seguindo sem agendamento'; } && bundle exec rails s -b 0.0.0.0"
|
||||
# Todo o boot (migrations, cron, Puma) mora em bin/docker-boot, com o
|
||||
# motivo de cada passo comentado lá. Ficava aqui como uma linha só de
|
||||
# `bash -c`, ilegível e impossível de depurar quando um passo falhava.
|
||||
command: ["bin/docker-boot"]
|
||||
|
||||
# `unless-stopped`: sobe sozinho depois de queda do processo, de reboot do
|
||||
# servidor e de `docker compose up`, e SÓ fica parado se alguém der
|
||||
# `docker compose stop/down` explicitamente. Como o bin/docker-boot roda
|
||||
# `db:prepare` no começo, isso já entrega a migration automática a cada
|
||||
# restart — não existe passo manual depois do deploy.
|
||||
#
|
||||
# Escolhido em vez de `always` porque `always` reergue o container até
|
||||
# depois de um `stop` deliberado (num reboot do servidor), tirando do
|
||||
# operador a chance de deixar o sistema fora do ar de propósito.
|
||||
restart: unless-stopped
|
||||
|
||||
# O banco PostgreSQL já existe externamente.
|
||||
# Configure DB_HOST no .env com o IP/hostname do seu servidor PostgreSQL.
|
||||
#
|
||||
@@ -62,6 +65,9 @@ services:
|
||||
WHATSAPP_TOKEN: ${WHATSAPP_TOKEN}
|
||||
WHATSAPP_DATA_DIR: /data
|
||||
PORT: 3001
|
||||
# Mesmo fuso do Rails: log de envio com hora diferente da do sistema
|
||||
# torna impossível cruzar os dois na hora de investigar uma falha.
|
||||
TZ: ${TZ:-America/Sao_Paulo}
|
||||
volumes:
|
||||
# A sessão pareada vive aqui. Sem este volume, cada deploy exige escanear
|
||||
# o QR de novo.
|
||||
|
||||
Reference in New Issue
Block a user