This repository was archived by the owner on Mar 23, 2025. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathdocker-compose.yml
More file actions
128 lines (106 loc) · 3.02 KB
/
docker-compose.yml
File metadata and controls
128 lines (106 loc) · 3.02 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
services:
watchtower:
image: containrrr/watchtower
restart: unless-stopped
container_name: watchtower
environment:
- WATCHTOWER_POLL_INTERVAL=1800
- WATCHTOWER_CLEANUP=true
volumes:
- /var/run/docker.sock:/var/run/docker.sock
- /root/.docker/config.json:/config.json
profiles:
- production
mongo:
image: mongo
restart: unless-stopped
environment:
MONGO_INITDB_DATABASE: $DB_NAME
volumes:
- mongodb:/data/db
- ./mongodb/mongo-init.js:/docker-entrypoint-initdb.d/mongo-init.js:ro
networks:
- backend
backend:
depends_on:
- mongo
- kafka
image: $BACKEND_IMAGE
build:
context: ./backend
restart: on-failure
environment:
SPRING_APPLICATION_JSON: '{
"spring.application.name": "backend",
"spring.data.mongodb.host": "mongo",
"spring.data.mongodb.port": "27017",
"spring.data.mongodb.database": "$DB_NAME",
"spring.kafka.consumer.auto-offset-reset": "earliest",
"spring.kafka.consumer.group-id": "backend_consumer",
"spring.kafka.bootstrap-servers": "kafka:29092",
"security.jwt.secret-key": "$JWT_SECRET_KEY",
"security.jwt.expiration-time": "$JWT_EXPIRATION_TIME",
"springdoc.api-docs.path": "/api/v1/docs",
"gemini.api-key": "$GEMINI_API_KEY",
"google.search-api-key": "$GOOGLE_SEARCH_API_KEY",
"google.search-engine-id": "$GOOGLE_SEARCH_ENGINE_ID",
"webUrl": "$WEB_URL"
}'
networks:
- backend
- frontend
ports:
- "$BACKEND_PORT:8080"
web:
depends_on:
- backend
environment:
NEXT_PUBLIC_BACKEND_URL: $NEXT_PUBLIC_BACKEND_URL
NEXT_PUBLIC_CHAT_WS_URL: $NEXT_PUBLIC_CHAT_WS_URL
image: $WEB_IMAGE
build:
context: ./web
restart: unless-stopped
networks:
- frontend
ports:
- "$WEB_PORT:3000"
zookeeper:
image: confluentinc/cp-zookeeper
networks:
- backend
environment:
ZOOKEEPER_CLIENT_PORT: 2181
ZOOKEEPER_TICK_TIME: $ZOOKEEPER_TICK_TIME
volumes:
- zookeeper_data:/var/lib/zookeeper/data
- zookeeper_log:/var/lib/zookeeper/log
kafka:
image: confluentinc/cp-kafka
networks:
- backend
depends_on:
- zookeeper
ports:
- "$KAFKA_PORT:9092"
environment:
KAFKA_BROKER_ID: 1
KAFKA_ZOOKEEPER_CONNECT: zookeeper:2181
KAFKA_ADVERTISED_LISTENERS: PLAINTEXT://kafka:29092,PLAINTEXT_HOST://$KAFKA_HOST:$KAFKA_PORT
KAFKA_LISTENER_SECURITY_PROTOCOL_MAP: PLAINTEXT:PLAINTEXT,PLAINTEXT_HOST:PLAINTEXT
KAFKA_INTER_BROKER_LISTENER_NAME: PLAINTEXT
KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR: 1
KAFKA_LOG_RETENTION_MS: $KAFKA_LOG_RETENTION_MS
KAFKA_LOG_RETENTION_CHECK_INTERVAL_MS: $KAFKA_LOG_RETENTION_CHECK_INTERVAL_MS
volumes:
- kafka_data:/var/lib/kafka/data
volumes:
mongodb:
zookeeper_data:
zookeeper_log:
kafka_data:
networks:
frontend:
driver: bridge
backend:
driver: bridge