Pular para o conteúdo principal

ADR 0003 — Docker com PHP-FPM + nginx; banco fora do compose

  • Status: aceito
  • Data: 2026-09

Contexto

O manual antigo descrevia só Laragon + FTP. Precisávamos de runtime reproduzível (extensões, nginx negando .env/vendor, build de CSS e Composer no CI mental do time) sem amarrar o MySQL da operação — que já existe no painel de hosting, com backup e max_connections próprios.

Decisão

  • Imagem única app: nginx + php-fpm 8.3 Alpine, multi-stage (Node CSS + Composer).
  • docker-compose.yml não sobe MySQL. DB_HOST aponta para o banco do ambiente.
  • Entrypoint materializa .env a partir das variáveis do processo.
  • Volumes para uploads, sessões e logs.

Consequências

  • host.docker.internal (Desktop) vs IP do MySQL na VPS precisa ser documentado por ambiente.
  • Bind mount de JSON de Drive quebra o compose up se o arquivo não existe — por isso a opção de JSON inline.
  • Rollback = tag anterior da imagem + dump se houve migration incompatível. Ver ../deploy.md.