-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathdocker-compose.yaml
199 lines (182 loc) · 6.69 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
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
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
version: '3.6'
services:
# PROXY
proxy:
container_name: ${NAME}-proxy
# image: nginx:latest
build: ./img/nginx
ports:
- ${PROXY_PORT}:80
depends_on:
- graphql-engine
- backend
- pgadmin
- redis
- storage
# задаем файлы и папки
volumes:
#- ./server/public:/usr/share/nginx/html
- ./img/nginx/default.conf:/etc/nginx/conf.d/default.conf
- ./img/nginx/proxy.conf:/etc/nginx/conf.d/proxy.conf
# Хранилище для загрузки и раздачи файлов
- ./storage:/storage
environment:
# - NGINX_HOST=foobar.com
- NGINX_PORT=80
# REDIS
redis:
container_name: ${NAME}-redis
image: redis:alpine
ports:
- ${REDIS_PORT}:6379
# задаем место для сохранения БД
volumes:
- ./db/redis:/data:cached
- ./img/redis/redis-local.conf:/etc/redis-local.conf
# POSTGRES
postgres:
container_name: ${NAME}-postgres
#image: postgres:12
build: ./img/postgres
restart: always
# uncomment only if you are want to access to the postgres from outside
ports:
- ${POSTGRES_PORT}:5432
volumes:
- ./db/postgres:/var/lib/postgresql/data
environment:
# default USER postgres
POSTGRES_USER: ${POSTGRES_USER}
POSTGRES_PASSWORD: ${POSTGRES_PASSWORD}
POSTGRES_DB: ${POSTGRES_DB}
# PGADMIN
pgadmin:
container_name: ${NAME}-pgadmin
image: dpage/pgadmin4
restart: always
depends_on:
- postgres
ports:
- ${PGADMIN_PORT}:80
volumes:
- ./img/pgadmin/servers.json:/servers.json
## you can change pgAdmin default username/password with below environment variables
environment:
PGADMIN_DEFAULT_EMAIL: ${PGADMIN_DEFAULT_EMAIL}
PGADMIN_DEFAULT_PASSWORD: ${PGADMIN_DEFAULT_PASSWORD}
PGADMIN_SERVER_JSON_FILE: /servers.json
# GRAPHQL
graphql-engine:
container_name: ${NAME}-graphql
# image: hasura/graphql-engine:v1.3.3
image: hasura/graphql-engine:v1.3.3.cli-migrations-v2
ports:
- ${HASURA_PORT}:8080
depends_on:
- postgres
restart: always
volumes:
- ./db/migrations:/migrations
- ./db/metadata:/metadata
- ./db/seeds:/seeds
- ./db/config.yaml:/config.yaml
environment:
HASURA_GRAPHQL_DATABASE_URL: postgres://${POSTGRES_USER}:${POSTGRES_PASSWORD}@postgres:5432/${POSTGRES_DB}
HASURA_GRAPHQL_ENABLE_CONSOLE: "true" # set to "false" to disable console
HASURA_GRAPHQL_ENABLED_LOG_TYPES: startup, http-log, webhook-log, websocket-log, query-log
# Период передачи обновлений по подписке, сек
HASURA_GRAPHQL_LIVE_QUERIES_MULTIPLEXED_REFETCH_INTERVAL: 1
## Закоментировать для продукта
HASURA_GRAPHQL_DEV_MODE: "true"
HASURA_GRAPHQL_ENABLE_TELEMETRY: "false"
HASURA_GRAPHQL_LOG_LEVEL: "warn" # debug, info, warn, error.
##
HASURA_GRAPHQL_CORS_DOMAIN: ${HASURA_GRAPHQL_CORS_DOMAIN}
# HASURA_GRAPHQL_ENDPOINT: http://graphql-engine:8080
## Можно закомментировать для отладки без пароля
## Для продакшена поставить очень длинный пароль
HASURA_GRAPHQL_ADMIN_SECRET: ${HASURA_ADMIN_SECRET}
## Путь указать по адресу сети docker или физическому адресу машины при отладке, не localhost!!!
HASURA_GRAPHQL_AUTH_HOOK: ${HASURA_AUTH_HOOK}
HASURA_GRAPHQL_AUTH_HOOK_MODE: GET
## Пути к каталогам миграций и метаданных
# HASURA_GRAPHQL_MIGRATIONS_DIR: /migrations # ${HASURA_MIGRATIONS}
# HASURA_GRAPHQL_METADATA_DIR: /metadata # ${HASURA_METADATA}
## БИЗНЕС-ЛОГИКА
## Пути к обработчикам настраиваемых запросов
BACKEND_BASE_URL: ${HASURA_BACKEND_BASE_URL}
## Путь к обработчику ваторизации
AUTH_BASE_URL: ${HASURA_BACKEND_BASE_URL}/auth
## Путь к обработчику настраиваемых запросов Query/Mutation
ACTIONS_BASE_URL: ${HASURA_BACKEND_BASE_URL}/actions
## Путь к обработчику событий
EVENTS_BASE_URL: ${HASURA_BACKEND_BASE_URL}/events
## Путь к обработчику событий по времени
CRON_BASE_URL: ${HASURA_BACKEND_BASE_URL}/cron
command:
- graphql-engine
- serve
# S3 COMPATIBLE STORAGE
# https://min.io/
# Основан на образе ubi-minimal:8.3,
# Менеджер пакетов microdnf, yum надо устанавливать дополнительно.
storage:
container_name: ${NAME}-storage
image: minio/minio
ports:
- 9000:9000
restart: always
volumes:
- ./cloud:/data
# 4 Disks distributed configuration
- ./cloud4x/data1:/data1
- ./cloud4x/data2:/data2
- ./cloud4x/data3:/data3
- ./cloud4x/data4:/data4
environment:
MINIO_ROOT_USER: ${STORAGE_USER}
MINIO_ROOT_PASSWORD: ${STORAGE_SECRET}
# MINIO_REGION_NAME: "my_region"
#
# MINIO_STORAGE_CLASS_STANDARD: "EC:4" # set the parity count for default standard storage class e.g. "EC:4"
# MINIO_STORAGE_CLASS_RRS: "EC:2" # set the parity count for reduced redundancy storage class e.g. "EC:2"
# MINIO_STORAGE_CLASS_COMMENT: "STD=4, RRS=2"
command: server /data{1...4}
# command: server /data
# command: server http://minio{1...4}/data{1...2}
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:9000/minio/health/live"]
interval: 30s
timeout: 20s
retries: 3
# NODEJS BACKEND
backend:
container_name: ${NAME}-backend
build:
context: ./server
args:
ARG: "Value"
restart: always
# ports:
# - 3003:3000
# - 9229:9229 # inspector debug interface
volumes:
- ./server:/server
- ./storage:/storage
environment:
# Внутренний адрес для прямых запросов из бэкенда
HASURA: http://graphql-engine:8080/v1/graphql
ORIGIN: http://graphql-engine:8080
STORAGE: /storage
STORAGE_USER: ${STORAGE_USER}
STORAGE_SECRET: ${STORAGE_SECRET}
# http://localhost:3000 https://localhost:3000 http://dev2x.leaderit.ru
# default NODE enviroment
NODE_ENV: development # production
# Для разработки
command: pm2-runtime ecosystem.config.js
# server.js --watch --ignore-watch="public"
# command: node --inspect=0.0.0.0:9229 server.js
volumes:
db_data:
caddy_certs: