-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathdocker-compose.yml
130 lines (129 loc) · 3.5 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
# all variables used in this file are defined in the .env file
version: "2.2"
services:
node-app-0:
restart: always
build: ./backend/server
links:
- ${DB_HOST}
depends_on:
- ${DB_HOST}
ports:
- "8001:${SERVER_PORT}"
environment:
WAIT_HOSTS: ${DB_HOST}:${DB_PORT}
WAIT_HOSTS_TIMEOUT: 1000
ROLE: MASTER
HOST: ${CONTAINER_NAME_1}
DB_HOST: ${DB_HOST}
DB_PORT: ${DB_PORT}
DB_NAME: ${DB_NAME}
DB_USER: ${DB_USER}
DB_PASS: ${DB_PASS}
SERVER_PORT: ${SERVER_PORT}
NODE_ENV: ${NODE_ENV}
SERVER_HOST_SEARCH: ${SERVER_HOST_SEARCH}
SERVER_PORT_SEARCH: ${SERVER_PORT_SEARCH}
labels:
- "traefik.frontend.rule=Host:${HOST_WEB_SERVER}"
- "traefik.backend=node-app-0"
- "traefik.passHostHeader=true"
- "traefik.enable=true"
- "traefik.port=${SERVER_PORT}"
traefik:
image: "traefik:v2.3"
container_name: "traefik"
command:
- "--log.level=DEBUG"
- "--api.insecure=true"
- "--providers.docker=true"
- "--providers.docker.exposedbydefault=false"
- "--entrypoints.web.address=:80"
ports:
- "80:80"
- "8080:8080"
volumes:
- "/var/run/docker.sock:/var/run/docker.sock:ro"
search-microservice:
restart: always
build: ./backend/search-service
links:
- ${DB_HOST}
depends_on:
- ${DB_HOST}
ports:
- "8002:3000"
environment:
WAIT_HOSTS: ${DB_HOST}:${DB_PORT}
WAIT_HOSTS_TIMEOUT: 1000
HOST: ${CONTAINER_NAME_SEARCH}
DB_HOST_SEARCH: ${DB_HOST_SEARCH}
DB_PORT_SEARCH: ${DB_PORT_SEARCH}
DB_NAME_SEARCH: ${DB_NAME_SEARCH}
DB_USER_SEARCH: ${DB_USER_SEARCH}
DB_PASS_SEARCH: ${DB_PASS_SEARCH}
SERVER_PORT_SEARCH: ${SERVER_PORT_SEARCH}
NODE_ENV: ${NODE_ENV}
frontend:
container_name: ${CONTAINER_NAME_FRONTEND}
build: ./frontend
ports:
# DEV: the port inside and outside must be the same.
# webpack dev server hot reloading tries to connect directly to the port
# inside the container (not possible if not the same port)
- '9000:9000'
labels:
- "traefik.frontend.rule=Host:${HOST_WEB_FRONTEND}"
- "traefik.backend=frontend"
- "traefik.passHostHeader=true"
- "traefik.enable=true"
- "traefik.port=9000"
mongo:
container_name: ${DB_HOST}
# context: ./backend/docker/mongodb
image: mongo:3.4.2
# user: mongodb
environment:
MONGO_INITDB_ROOT_USERNAME: ${DB_USER}
MONGO_INITDB_ROOT_PASSWORD: ${DB_PASS}
MONGO_INITDB_DATABASE: ${DB_NAME}
volumes:
- ./mongo-init.js:/docker-entrypoint-initdb.d/mongo-init.js:ro
- node-ts-app-volume:/data/db
restart: always
ports:
- "${DB_PORT}:${DB_PORT}"
command: mongod # --replSet rs0
ports:
- "27017:27017"
mongo-seed:
build:
context: ./backend/docker/db-seed
dockerfile: Dockerfile
environment:
WAIT_HOSTS: ${DB_HOST}:${DB_PORT}
WAIT_HOSTS_TIMEOUT: 1000
DB_HOST: ${DB_HOST}
DB_PORT: ${DB_PORT}
DB_NAME: ${DB_NAME}
DB_USER: ${DB_USER}
DB_PASS: ${DB_PASS}
depends_on:
- ${DB_HOST}
links:
- ${DB_HOST}
# loadbalancer:
# build: ./backend/docker/nginx
# tty: true
# links:
# - ${CONTAINER_NAME_SEARCH}
# - frontend
# ports:
# - '8080:8080'
# - '8081:8081'
# depends_on:
# - ${CONTAINER_NAME_SEARCH}
# - frontend
volumes:
node-ts-app-volume:
external: true