-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathdocker-compose.yml
More file actions
157 lines (149 loc) · 4.15 KB
/
docker-compose.yml
File metadata and controls
157 lines (149 loc) · 4.15 KB
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
services:
db:
image: postgres:alpine
restart: always
environment:
POSTGRES_DB: ${DB_DATABASE:-nexquery_ai}
POSTGRES_USER: ${DB_USER:-postgres}
POSTGRES_PASSWORD: ${DB_PASSWORD:-root123}
PGDATA: /var/lib/postgresql/pgdata
ports:
- '${DB_PORT:-5432}:5432'
volumes:
- db_data:/var/lib/postgresql
networks:
- nexquery_network
redis:
image: redis:alpine
restart: always
ports:
- '6379:6379'
volumes:
- redis_data:/data
networks:
- nexquery_network
qdrant:
image: qdrant/qdrant:latest
restart: always
environment:
QDRANT__SERVICE__API_KEY: ${QDRANT_API_KEY}
ports:
- '6333:6333'
volumes:
- qdrant_data:/qdrant/storage
networks:
- nexquery_network
backend:
profiles: [app]
build:
context: .
dockerfile: backend/Dockerfile
restart: always
env_file: .env
environment:
NODE_ENV: production
HOST: 0.0.0.0
DB_HOST: db
QDRANT_HOST: qdrant
# Force encryption in production, even if .env says false
API_ENCRYPTION_ENABLED: 'true'
command: >
sh -c "node ace migration:run --force && node ace db:seed && node bin/server.js"
ports:
- '${PORT:-3008}:3008'
depends_on:
- db
networks:
- nexquery_network
volumes:
- ./backend/logs:/app/backend/build/logs
frontend:
profiles: [app]
build:
context: .
dockerfile: frontend/Dockerfile
args:
# Force encryption in production build
API_ENCRYPTION_ENABLED: 'true'
ports:
- 3000:3000
restart: always
env_file: .env
depends_on:
- backend
networks:
- nexquery_network
# es-setup:
# image: docker.elastic.co/elasticsearch/elasticsearch:8.12.0
# container_name: es-setup
# volumes:
# - es_data:/usr/share/elasticsearch/data
# user: '0'
# command: >
# bash -c '
# PW=${ELASTIC_PASSWORD:-nexquery_secure_pwd};
# echo "Setting internal passwords using provided or default value...";
# echo $$PW | bin/elasticsearch-keystore add -x "bootstrap.password" || true;
# until curl -s http://elasticsearch:9200 | grep -q "missing authentication credentials"; do sleep 2; done;
# curl -s -X POST -u "elastic:$$PW" -H "Content-Type: application/json" http://elasticsearch:9200/_security/user/kibana_system/_password -d "{\"password\":\"$$PW\"}" | grep -q "^{}" || echo "Failed to set kibana_system password";
# echo "All done!";
# '
# networks:
# - nexquery_network
# depends_on:
# - elasticsearch
elasticsearch:
image: docker.elastic.co/elasticsearch/elasticsearch:8.12.0
environment:
- discovery.type=single-node
- xpack.security.enabled=true
- ELASTIC_PASSWORD=${ELASTIC_PASSWORD:-nexquery_secure_pwd}
- ES_JAVA_OPTS=-Xms512m -Xmx512m
ulimits:
memlock:
soft: -1
hard: -1
ports:
- '9200:9200'
networks:
- nexquery_network
volumes:
- es_data:/usr/share/elasticsearch/data
kibana:
image: docker.elastic.co/kibana/kibana:8.12.0
environment:
- ELASTICSEARCH_HOSTS=http://elasticsearch:9200
- ELASTICSEARCH_USERNAME=kibana_system
- ELASTICSEARCH_PASSWORD=${ELASTIC_PASSWORD:-nexquery_secure_pwd}
ports:
- '5601:5601'
depends_on:
- elasticsearch
networks:
- nexquery_network
filebeat:
image: docker.elastic.co/beats/filebeat:8.12.0
user: root
volumes:
- ./docker/filebeat/filebeat.yml:/usr/share/filebeat/filebeat.yml:ro
- ./backend/logs:/var/log/app:ro
- /var/lib/docker/containers:/var/lib/docker/containers:ro
- /var/run/docker.sock:/var/run/docker.sock:ro
- filebeat_data:/usr/share/filebeat/data
environment:
- ELASTICSEARCH_HOSTS=http://elasticsearch:9200
- ELASTICSEARCH_USERNAME=elastic
- ELASTICSEARCH_PASSWORD=${ELASTIC_PASSWORD:-nexquery_secure_pwd}
depends_on:
- elasticsearch
networks:
- nexquery_network
networks:
nexquery_network:
driver: bridge
volumes:
db_data:
redis_data:
qdrant_data:
es_data:
filebeat_data: