forked from devhatt/pet-dex-backend
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathdocker-compose.yml
148 lines (142 loc) · 3.08 KB
/
docker-compose.yml
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
139
140
141
142
143
144
145
146
147
148
volumes:
cache:
driver: local
cache-test:
driver: local
networks:
pet-dex-dev:
driver: bridge
pet-dex-integration-tests:
driver: bridge
services:
api:
image: cosmtrek/air
profiles:
- development
hostname: api
working_dir: /app
environment:
- PORT=${API_PORT}
- ENVIRONMENT=${ENVIRONMENT}
ports:
- "${API_PORT}:${API_PORT}"
volumes:
- ./:/app
depends_on:
cache:
condition: service_started
db:
condition: service_healthy
env_file:
- .env.example
- .env
networks:
- pet-dex-dev
db: &db # TODO: Quando subir dev se não tiver migration tem q rodar
image: mariadb:11.4.1-rc-jammy
profiles:
- development
hostname: db
environment:
- MARIADB_DATABASE=${DB_DATABASE}
- MARIADB_USER=${DB_USER}
- MARIADB_PASSWORD=${DB_PASSWORD}
- MARIADB_ROOT_PASSWORD=${DB_ROOT_PASSWORD}
- PORT=${DB_PORT}
ports:
- "${DB_PORT}:${DB_PORT}"
depends_on:
cache:
condition: service_started
healthcheck:
test: ["CMD", "healthcheck.sh", "--connect", "--innodb_initialized"]
start_period: 20s
interval: 20s
timeout: 10s
retries: 3
volumes:
- ./data:/var/lib/mysql
env_file:
- .env.example
- .env
networks:
- pet-dex-dev
cache: &cache
image: redis:7.2.4-alpine
profiles:
- development
hostname: pet-dex-cache
restart: always
environment:
REDIS_PASSWORD: ${REDIS_PASSWORD}
ports:
- "${REDIS_PORT}:${REDIS_PORT}"
command: redis-server --save "" --requirepass ${REDIS_PASSWORD}
volumes:
- ./cache:/data
env_file:
- .env.example
- .env
networks:
- pet-dex-dev
api-test:
build:
context: .
dockerfile: Dockerfile
profiles:
- integration-tests
hostname: api-tests
environment:
PORT: ${API_PORT}
ENVIRONMENT: ${ENVIRONMENT}
MIGRATIONS_PATH: ${MIGRATIONS_PATH}
INTEGRATION: true
ports:
- "${API_PORT}:${API_PORT}"
depends_on:
cache-test:
condition: service_healthy
db-test:
condition: service_healthy
env_file:
- .env.example
- .env
networks:
- pet-dex-integration-tests
cache-test:
<<: *cache
profiles:
- integration-tests
hostname: cache-test
healthcheck:
test: ["CMD", "redis-cli", "--raw", "incr", "ping"]
start_period: 1m
interval: 1m
timeout: 10s
retries: 3
volumes:
- ./cache:/data-teste
env_file:
- .env.example
networks:
- pet-dex-integration-tests
db-test:
<<: *db
depends_on:
cache-test:
condition: service_healthy
profiles:
- integration-tests
volumes:
- ./data-teste:/var/lib/mysql
healthcheck:
test: ["CMD", "healthcheck.sh", "--connect", "--innodb_initialized"]
start_period: 1m
interval: 1m
timeout: 10s
retries: 3
env_file:
- .env.example
- .env
networks:
- pet-dex-integration-tests