-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathdocker-compose.yaml
87 lines (84 loc) · 3.24 KB
/
docker-compose.yaml
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
version: '3.8'
name: bd2_tpo
services:
postgres:
image: postgres
container_name: ${POSTGRES_CONTAINER_NAME}
env_file:
- .env
environment: # DB credentials
- POSTGRES_DB=${POSTGRES_DB}
- POSTGRES_USER=${POSTGRES_USER}
- POSTGRES_PASSWORD=${POSTGRES_PASSWORD}
ports:
- ${POSTGRES_PORT}:5432
volumes:
# Para scripts de inicialización, todo lo que esté en docker-entrypoint-initdb.d se va a ejecutar solo si data esta vacío
# https://hub.docker.com/_/postgres
# Esto es un bind mount (no un volumen)
# <path_host>:<path_contenedor>:<opciones>
- ./migrations/schema.sql:/docker-entrypoint-initdb.d/init.sql # initial schema (executes sql files in first start)
# <nombre_volumen>:<path_en_contenedor>:<opciones>
- bd2_tpo_postgres_data:/var/lib/postgresql/data # persistent data (stored in host machine)
- bd2_tpo_pg_to_mongo_data:${PG_TO_MONGO_DATA_DIR} # TSV files to be imported to mongo
healthcheck:
test: ["CMD", "pg_isready", "-U", "postgres"]
interval: 5s
timeout: 4s
retries: 5
start_period: 10s
start_interval: 2s
mongo:
image: mongo
container_name: ${MONGO_CONTAINER_NAME}
env_file:
- .env
environment:
- MONGO_INITDB_ROOT_USERNAME=${MONGO_USER}
- MONGO_INITDB_ROOT_PASSWORD=${MONGO_PASSWORD}
ports:
- ${MONGO_PORT}:27017
volumes:
- bd2_tpo_mongo_data:/data/db # persistent data (stored in host machine)
- bd2_tpo_pg_to_mongo_data:${PG_TO_MONGO_DATA_DIR} # TSV files to be imported to mongo
# https://docs.docker.com/compose/compose-file/05-services/#healthcheck
# https://docs.docker.com/engine/reference/builder/#healthcheck
# healthcheck:
# test: [ "CMD", "mongosh --eval", "'db.runCommand(\"ping\").ok'", "--quiet"]
# interval: 1m30s #Tiempo entre intentos
# timeout: 10s #Tiempo a partir del cual considera que el intento fallo
# retries: 3 #cantidad de intentos
# start_period: 40s #tiempo hasta empezar a contar los intentos fallidos (antes intenta por si se levanta rapido)
# start_interval: 5s #tiempo entre los primeros intentos
server:
build: ./api/.
container_name: ${SERVER_CONTAINER_NAME}
ports:
- ${EXPRESS_PORT}:8000
#https://docs.docker.com/compose/environment-variables/env-file/
command: npm start
env_file:
- .env
environment:
- POSTGRES_HOST=${POSTGRES_CONTAINER_NAME}
- POSTGRES_PORT=5432
- MONGO_PORT=27017
- MONGO_HOST=${MONGO_CONTAINER_NAME}
volumes:
# Esto es un bind
- ./api/:/usr/src/app
# Esto es un volumen
- bd2_tpo_node_modules:/usr/src/app/node_modules
# https://docs.docker.com/compose/compose-file/05-services/#depends_on
depends_on:
postgres:
condition: service_healthy
mongo:
condition: service_started
# docker compose down --rmi local -v
# docker compose up
volumes:
bd2_tpo_postgres_data:
bd2_tpo_mongo_data:
bd2_tpo_node_modules:
bd2_tpo_pg_to_mongo_data: