-
Notifications
You must be signed in to change notification settings - Fork 3
Expand file tree
/
Copy pathdocker-compose.yml
More file actions
106 lines (102 loc) · 3.13 KB
/
docker-compose.yml
File metadata and controls
106 lines (102 loc) · 3.13 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
services:
fastapi:
build:
context: ./fastapi
dockerfile: Dockerfile
container_name: flexrate-fastapi
ports:
- "8000:8000"
restart: always
mysql:
image: mysql:8.0
container_name: flexrate-mysql
environment:
MYSQL_DATABASE: ${MYSQL_DATABASE}
MYSQL_USER: ${MYSQL_USERNAME}
MYSQL_PASSWORD: ${MYSQL_PASSWORD}
MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD}
ports:
- "3307:3306"
volumes:
- mysql-data:/var/lib/mysql
restart: always
redis:
image: redis:7.2
container_name: flexrate-redis
ports:
- "6379:6379"
restart: always
backend:
build:
context: .
dockerfile: Dockerfile
container_name: flexrate-backend
ports:
- "8080:8080"
depends_on:
- mysql
- redis
- fastapi
environment:
SPRING_PROFILES_ACTIVE: prod
MYSQL_URL: ${MYSQL_URL_PROD}
MYSQL_USERNAME: ${MYSQL_USERNAME_PROD}
MYSQL_PASSWORD: ${MYSQL_PASSWORD_PROD}
REDIS_HOST: ${REDIS_HOST_PROD}
REDIS_PORT: ${REDIS_PORT_PROD}
ELASTICSEARCH_HOST: ${ELASTICSEARCH_HOST}
ELASTICSEARCH_PORT: ${ELASTICSEARCH_PORT}
LOG_PATH: ${LOG_PATH}
LOGSTASH_HOST_PROD: ${LOGSTASH_HOST_PROD}
LOGSTASH_PORT_PROD: ${LOGSTASH_PORT_PROD}
restart: always
volumes:
- backend-logs:/logs
env_file:
- ./.env
logstash:
image: docker.elastic.co/logstash/logstash:8.13.2
container_name: flexrate-logstash
ports:
- "5001:5000"
volumes:
- ./logstash/pipeline/logstash.conf:/usr/share/logstash/pipeline/logstash.conf:ro # Logstash 설정 파일을 읽기 전용으로 마운트 (보안)
depends_on:
- elasticsearch # Elasticsearch 서비스가 먼저 시작되어야 함 (Logstash와 Kibana는 Elasticsearch에 의존)
restart: always
elasticsearch:
image: docker.elastic.co/elasticsearch/elasticsearch:8.13.2
container_name: flexrate-elasticsearch
environment:
- discovery.type=single-node # 단일 노드 모드로 실행
- ES_JAVA_OPTS=-Xms2g -Xmx2g # JVM 메모리 설정 (최소 2GB, 최대 2GB)
- xpack.security.enabled=false # 보안 기능 설정 (개발: false, 운영: true).
ports:
- "9200:9200"
restart: always
kibana:
image: docker.elastic.co/kibana/kibana:8.13.2
container_name: flexrate-kibana
ports:
- "5601:5601"
environment:
- ELASTICSEARCH_HOSTS=http://elasticsearch:9200
- ELASTICSEARCH_SERVICEACCOUNTTOKEN=${KIBANA_ELASTICSEARCH_SERVICEACCOUNTTOKEN} # Elasticsearch 서비스 계정 토큰
- ELASTICSEARCH_SSL_VERIFICATIONMODE=none # SSL 인증 모드 비활성화
depends_on:
- elasticsearch # Elasticsearch 서비스가 먼저 시작되어야 함 (Logstash와 Kibana는 Elasticsearch에 의존)
restart: always
filebeat:
image: docker.elastic.co/beats/filebeat:8.13.2
container_name: flexrate-filebeat
user: root
depends_on:
- elasticsearch
- logstash
volumes:
- ./filebeat/filebeat.yml:/usr/share/filebeat/filebeat.yml:ro
- backend-logs:/logs:ro
restart: always
volumes:
mysql-data:
backend-logs: