Pular para conteúdo

Configuração de perfis — Micronaut

Status: Aprovado · Responsável: Gustavo Madruga · Atualizado em: 2026-09-15

O integrador distingue três situações práticas:

Situação Perfis ativos (típico) YAML carregado
Deploy padrão (Coolify, só application.yml) nenhum nome dev/test (lista vazia ou outros nomes legados) application.yml + ENV
Desenvolvimento local dev application.yml + application-dev.yml
Testes JUnit test application.yml + application-test.yml

Nota: MICRONAUT_ENVIRONMENTS=prod não é necessário para produção. Se ainda existir em algum deploy legado, o comportamento continua “produção” desde que dev e test não estejam ativos.

Perfil de desenvolvimento (dev)

Características

  • Conecta ao PostgreSQL do Docker (localhost:5432/integrador_dev)
  • Permite limpar e recriar o banco do zero (clean-schema: true no application-dev.yml)
  • Bearer em /api desligado por omissão
  • Sentry não inicializa sem SENTRY_DSN (em geral não configurado em local)

Como usar

Variável de ambiente

export MICRONAUT_ENVIRONMENTS=dev
./gradlew run

Argumento JVM

./gradlew run --args="-Dmicronaut.environments=dev"

IDE: VM options: -Dmicronaut.environments=dev

Limpar e recriar o banco

Em dev, o Flyway usa clean-schema: true: a cada arranque limpa o schema e reaplica migrações.

Importante: isso só ocorre com perfil dev. O application.yml de produção mantém clean-schema: false.

Produção (default do JAR)

O ficheiro application.yml define os defaults de produção (Flyway sem clean-schema, pool, etc.). Não existe application-prod.yml; dados por cliente vêm de variáveis de ambiente (Coolify).

Características

  • BD e segredos via ENV (DATASOURCES_DEFAULT_*, INTEGRADOR_API_TOKEN, CLIENTE, SENTRY_DSN, …)
  • Nunca limpa o banco automaticamente
  • UI web (edição, /debug): só liberada com dev ou test — em Coolify sem dev, a interface é somente leitura para alterações mutáveis

Sentry em produção

Defina SENTRY_DSN no Coolify. O código não usa mais o perfil prod para decidir o Sentry; usa DSN válido + ausência de dev/test.

Lista completa de variáveis: application-config.md.

Verificar perfil ativo

Nos logs de arranque, o Micronaut mostra por exemplo:

Active environment(s): [dev]

ou, em deploy só com defaults:

Active environment(s): []

(ou outros nomes, desde que não seja dev/test para efeitos de UI/Sentry.)

Estrutura de ficheiros

src/main/resources/
├── application.yml         # Produção (default do JAR) + placeholders ${ENV:...}
└── application-dev.yml     # Apenas com MICRONAUT_ENVIRONMENTS=dev

Testes

# Linux/macOS
./gradlew coverage

# Windows
.\gradlew.bat coverage

Postgres de teste: os testes @MicronautTest rodam contra o singleton da xadm-comum-teste — um postgres:18-alpine por JVM, subido pelo Testcontainers, com as migrations reais aplicadas pelo Flyway na primeira classe. Basta o Docker no ar; sem ele, cada classe @MicronautTest falha com uma IllegalStateException que diz que o Postgres de teste não subiu. Não é preciso instalar Postgres nem apontar URL.

  • A classe de teste estende IntegracaoComPostgres, que injeta a URL do datasource e zera as tabelas antes de cada teste, menos o histórico do Flyway (flyway_schema_history, o nome default, como em produção). O teste semeia o que precisa no @BeforeEach, que roda depois da limpeza.
  • Classe que injeta propriedades próprias sobrescreve getProperties() somando as suas ao super.getProperties().
  • O application-test.yml fixa o pool de teste (connection-timeout: 5000, maximum-pool-size: 4) e não declara URL. Os tetos de tempo da suíte estão em Diagnóstico de testes flaky.
  • Os testes de migration que aplicam o Flyway do zero (*FlywayIntegrationTest, UpdatedAt*SchemaTest) e o TableExportServiceIntegrationTest sobem container próprio, fora do singleton.

Testes sem base (ex.: Mockito puros) podem correr isoladamente com --tests 'br.com.xadm.comum.AuthSupportTest'.

Dicas

  1. Desenvolvimento: use o perfil dev para desenvolvimento local.
  2. Produção: configure as variáveis de ambiente no Coolify; SENTRY_DSN se quiser erros no Sentry.
  3. Secrets: use secrets do Coolify ou um gestor dedicado.
  4. Migrações: teste sempre em staging antes de produção.