-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathdocker-compose.yml
127 lines (117 loc) · 3.7 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
# This file is part of the Drups.io Docker.
#
# (c) 2021 Drups.io <[email protected]>
#
# For the full copyright and license information, please view the LICENSE
# file that was distributed with this source code.
#
# Written by Temuri Takalandze <[email protected]>, April 2021
version: "3.7"
services:
engine:
image: python:$PYTHON_TAG
container_name: "${PROJECT_NAME}_engine"
working_dir: /var/app
volumes:
- ./${ENGINE_DIR}:/var/app
- ./certs/docker/client:/certs/docker/client
depends_on:
- rabbitmq
- redis
- docker
- registry.loc
command: >
bash -c "mkdir -p /var/log/drups
&& touch /var/log/drups/worker.log
&& celery -A drups worker --loglevel=DEBUG -E
|| tail -F /dev/null"
application_back:
image: node:$BACK_NODE_TAG
container_name: "${PROJECT_NAME}_application_back"
working_dir: /var/www/html/packages/api
labels:
- "traefik.http.services.${PROJECT_NAME}_application_back.loadbalancer.server.port=4000"
- "traefik.http.routers.${PROJECT_NAME}_application_back.rule=Host(`${APPLICATION_BACK_URL}`)"
expose:
- "4000"
volumes:
- ./${APPLICATION_DIR}:/var/www/html
depends_on:
- engine
- redis
- postgres
- traefik
command: bash -c 'yarn run dev || tail -F /dev/null'
application_front:
image: node:$BACK_NODE_TAG
container_name: "${PROJECT_NAME}_application_front"
working_dir: /var/www/html/packages/client
labels:
- "traefik.http.services.${PROJECT_NAME}_application_front.loadbalancer.server.port=3000"
- "traefik.http.routers.${PROJECT_NAME}_application_front.rule=Host(`${APPLICATION_FRONT_URL}`)"
expose:
- "3000"
volumes:
- ./${APPLICATION_DIR}:/var/www/html
depends_on:
- application_back
- traefik
command: bash -c 'yarn run dev || tail -F /dev/null'
rabbitmq:
image: rabbitmq:$RABBITMQ_TAG
container_name: "${PROJECT_NAME}_rabbitmq"
environment:
RABBITMQ_DEFAULT_USER: $RABBITMQ_USER
RABBITMQ_DEFAULT_PASS: $RABBITMQ_PASS
labels:
- "traefik.http.services.${PROJECT_NAME}_rabbitmq_management_ui.loadbalancer.server.port=15672"
- "traefik.http.routers.${PROJECT_NAME}_rabbitmq_management_ui.rule=Host(`${RABBITMQ_URL}`)"
depends_on:
- traefik
redis:
image: redis:$REDIS_TAG
container_name: "${PROJECT_NAME}_redis"
postgres:
image: postgres:$POSTGRES_TAG
container_name: "${PROJECT_NAME}_postgres"
environment:
POSTGRES_USER: $POSTGRES_USER
POSTGRES_PASSWORD: $POSTGRES_PASSWORD
POSTGRES_DB: $POSTGRES_DB
docker:
image: docker:$DOCKER_TAG
container_name: "${PROJECT_NAME}_docker"
privileged: true
environment:
DOCKER_TLS_CERTDIR: ./certs
volumes:
- ./certs/docker/ca:/certs/ca
- ./certs/docker/client:/certs/client
- ./certs/registry/crt:/etc/docker/certs.d/registry.loc
depends_on:
- registry.loc
registry.loc:
image: registry:$DOCKER_REGISTRY_TAG
container_name: "${PROJECT_NAME}_registry"
environment:
REGISTRY_HTTP_ADDR: 0.0.0.0:443
REGISTRY_HTTP_TLS_CERTIFICATE: /certs/crt/ca.crt
REGISTRY_HTTP_TLS_KEY: /certs/key/ca.key
REGISTRY_AUTH: htpasswd
REGISTRY_AUTH_HTPASSWD_REALM: "Registry Realm"
REGISTRY_AUTH_HTPASSWD_PATH: /auth/htpasswd
volumes:
- ./certs/registry/crt:/certs/crt
- ./certs/registry/key:/certs/key
- ./auth/registry:/auth
expose:
- "443"
traefik:
image: traefik:v2.0
container_name: "${PROJECT_NAME}_traefik"
command: --api.insecure=true --providers.docker
ports:
- '80:80'
- '8080:8080'
volumes:
- /var/run/docker.sock:/var/run/docker.sock