-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathdocker-compose.yml
More file actions
57 lines (51 loc) · 3.1 KB
/
Copy pathdocker-compose.yml
File metadata and controls
57 lines (51 loc) · 3.1 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
services:
db: # Serviço do banco de dados PostgreSQL
image: postgres:16 # Usa a imagem oficial do PostgreSQL versão 16
environment: # Variáveis de ambiente para configurar o banco
POSTGRES_DB: employees # Nome do banco criado automaticamente
POSTGRES_USER: ${SPRING_DATASOURCE_USERNAME} # Usuário do banco, vindo da variável de ambiente
POSTGRES_PASSWORD: ${SPRING_DATASOURCE_PASSWORD} # Senha do banco, vinda da variável de ambiente
ports:
- "5432:5432" # Mapeia a porta 5432 do container para a mesma porta na máquina host (para acesso externo)
volumes:
- pgdata:/var/lib/postgresql/data # Volume para persistir os dados do banco entre reinícios do container
networks:
- aw-network # Coloca o db na rede customizada e permitir comunicação com outros serviços**
app: # Serviço da aplicação Spring Boot
build: . # Builda a imagem Docker usando o Dockerfile na raiz do projeto
ports:
- "8080:8080" # Expõe a porta 8080 do container na porta 8080 da máquina host
environment: # Passa as variáveis de ambiente para a aplicação Spring Boot dentro do container
SPRING_DATASOURCE_URL: jdbc:postgresql://db:5432/employees # URL de conexão com o banco no serviço 'db'
SPRING_DATASOURCE_USERNAME: ${SPRING_DATASOURCE_USERNAME} # Usuário do banco, passado da máquina host
SPRING_DATASOURCE_PASSWORD: ${SPRING_DATASOURCE_PASSWORD} # Senha do banco, passada da máquina host
depends_on:
- db # Garante que o serviço 'db' (PostgreSQL) será iniciado antes da aplicação
networks:
- aw-network # Adiciona o serviço à rede Docker personalizada
prometheus: # Serviço do Prometheus para monitoramento das métricas da aplicação
image: prom/prometheus:latest # Usa a imagem oficial do Prometheus
volumes:
- ./config/prometheus.yml:/etc/prometheus/prometheus.yml # Monta o arquivo de configuração do Prometheus dentro do container
- prometheus_data:/prometheus # Volume para persistência dos dados do Prometheus
ports:
- "9090:9090" # Expõe a porta 9090 para acesso à interface do Prometheus localmente
depends_on:
- app # Garante que a aplicação esteja rodando antes do Prometheus iniciar
networks:
- aw-network # Adiciona o serviço à rede Docker personalizada
grafana: # Serviço do Grafana para dashboard de métricas
image: grafana/grafana:latest # Usa a imagem oficial do Grafana
ports:
- "3000:3000" # Expõe a porta 3000 para acesso à interface do Grafana localmente
depends_on:
- app # Garante que a aplicação esteja rodando antes do Grafana iniciar
networks:
- aw-network # Adiciona o serviço à rede Docker personalizada
volumes:
pgdata: # Volume nomeado para armazenar os dados do PostgreSQL de forma persistente
prometheus_data: # Volume nomeado para persistência dos dados do Prometheus
grafana_data:
networks:
aw-network: # Rede Docker personalizada para comunicação entre containers
driver: bridge # Tipo padrão de rede Docker que permite comunicação isolada entre containers