-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathdocker-compose.yml
More file actions
138 lines (129 loc) · 3.57 KB
/
docker-compose.yml
File metadata and controls
138 lines (129 loc) · 3.57 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
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
services:
# ---- Bancos de Dados ----
mssql:
image: mcr.microsoft.com/mssql/server:2022-latest
env_file: .env
environment:
ACCEPT_EULA: "Y"
MSSQL_PID: "Express"
SA_PASSWORD: "${MSSQL_PASSWORD}"
MSSQL_TCP_PORT: 1433
MSSQL_OPTIONS: "-C" # Trust server certificate
volumes:
- ./database/mssql/init.sql:/db/init.sql
- ./database/mssql/entrypoint.sh:/entrypoint.sh
- ./database/mssql/mssql_scrypt.sql:/db/mssql_scrypt.sql
ports:
- "1434:1433"
healthcheck:
test: ["CMD-SHELL", '/opt/mssql-tools18/bin/sqlcmd -S localhost -U sa -P "$$SA_PASSWORD" -C -Q "SELECT 1" || exit 1']
interval: 10s
timeout: 30s # Aumente o timeout
start_period: 20s # Tempo extra para inicialização
retries: 5
restart: unless-stopped
entrypoint: ["/bin/bash", "/entrypoint.sh"]
mongodb:
image: mongo:latest
volumes:
- ./database/mongodb:/docker-entrypoint-initdb.d
ports:
- "27017:27017"
environment:
MONGO_INITDB_ROOT_USERNAME: "${MONGO_USER}"
MONGO_INITDB_ROOT_PASSWORD: "${MONGO_PASSWORD}"
MONGODB_LOG_ALL: "off"
MONGODB_LOG_CLIENT: "debug"
command: ["--quiet"]
healthcheck:
test: ["CMD", "mongosh", "--eval", "db.adminCommand('ping')"]
interval: 10s
timeout: 5s
redis:
image: redis:7-alpine
ports:
- "6379:6379"
volumes:
- redis_data:/data
environment:
REDIS_USER: "${REDIS_USER}"
REDIS_PASSWORD: "${REDIS_PASSWORD}"
command: ["redis-server", "--requirepass", "${REDIS_PASSWORD}", "--loglevel", "verbose"]
healthcheck:
test: ["CMD", "redis-cli", "-a", "${REDIS_PASSWORD}", "ping"]
# ---- Microserviços ----
auth-service:
build: ./microservices/auth-service
env_file: .env
ports:
- "3001:3000"
volumes:
- ./microservices/auth-service/src:/app/src
- ./microservices/auth-service/uploads:/app/uploads
- /app/node_modules
depends_on:
mssql:
condition: service_healthy
develop:
watch:
- action: sync+restart
path: ./app/src
target: /app/src
events-service:
build: ./microservices/events-service
env_file: .env
ports:
- "3002:3000"
volumes:
- ./microservices/events-service/src:/app/src
- ./microservices/events-service/uploads:/app/uploads
- /app/node_modules
depends_on:
- mssql
- redis
chat-service:
build: ./microservices/chat-service
env_file: .env
ports:
- "3003:3000"
volumes:
- ./microservices/chat-service/src:/app/src
- /app/node_modules
depends_on:
- mongodb
- redis
# ---- Frontend ----
frontend:
build: ./frontend
volumes:
- type: bind
source: ./frontend/src
target: /app/src
read_only: true
depends_on:
- auth-service
- events-service
# ---- Proxy ----
nginx:
build:
context: .
dockerfile: infra/nginx/Dockerfile
ports:
- "80:80"
- "443:443"
volumes:
# Let's Encrypt certificates (production with certbot)
- ./infra/nginx/ssl/cert.pem:/etc/nginx/ssl/cert.pem:ro
- ./infra/nginx/ssl/key.pem:/etc/nginx/ssl/key.pem:ro
# ACME challenge directory for certbot renewal
- /var/www/certbot:/var/www/certbot:ro
# Alternative: local SSL directory (for development or manual certificates)
# - ./infra/nginx/ssl:/etc/nginx/ssl:ro
depends_on:
- frontend
- auth-service
- events-service
- chat-service
volumes:
redis_data:
mssql_data: