-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathdocker-compose.yml
More file actions
90 lines (85 loc) · 3.71 KB
/
Copy pathdocker-compose.yml
File metadata and controls
90 lines (85 loc) · 3.71 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
services:
mysql:
image: mysql:8.4
environment:
MYSQL_DATABASE: youbuyfirst
MYSQL_USER: youbuyfirst
MYSQL_PASSWORD: youbuyfirst
MYSQL_ROOT_PASSWORD: root
ports:
- "3307:3306"
volumes:
- youbuyfirst-mysql-data:/var/lib/mysql
healthcheck:
test: ["CMD", "mysqladmin", "ping", "-h", "localhost", "-uyoubuyfirst", "-pyoubuyfirst"]
interval: 10s
timeout: 5s
retries: 10
backend:
build:
context: ./backend
environment:
SPRING_DATASOURCE_URL: jdbc:mysql://mysql:3306/youbuyfirst?useSSL=false&allowPublicKeyRetrieval=true&serverTimezone=UTC
SPRING_DATASOURCE_USERNAME: youbuyfirst
SPRING_DATASOURCE_PASSWORD: youbuyfirst
DATA_GO_SERVICE_KEY: ${DATA_GO_SERVICE_KEY:-}
KAKAO_REST_API_KEY: ${KAKAO_REST_API_KEY:-}
ports:
- "8080:8080"
depends_on:
mysql:
condition: service_healthy
# 기동 시 실거래(MOLIT) 데이터를 1회 멱등 적재한다. 데이터가 이미 있으면 즉시 종료.
# 팀원은 .env에 DATA_GO_SERVICE_KEY만 넣고 `docker compose up` 하면 데이터가 채워진다.
realestate-seed:
build:
context: ./pipeline
environment:
SPRING_BASE_URL: http://backend:8080
DATA_GO_SERVICE_KEY: ${DATA_GO_SERVICE_KEY:-}
depends_on:
- backend
restart: "no"
command: ["bash", "/workspace/scripts/seed-realestate.sh"]
# 실거래(MOLIT) "현재월"을 주기적으로 재수집(지각 신고 반영). 기본 하루 1회.
# 실거래는 월 단위라 분 단위 폴링이 불필요 → 하루 1회로 충분.
# 현재월/비교월(MoM·6개월·YoY)은 스크립트가 매 주기 "지금" 기준으로 자동 계산해서
# 빠진 비교월을 자동 백필한다 - REALESTATE_CURRENT_DEAL_YM은 테스트용 override일 때만 채운다.
realestate-refresh:
build:
context: ./pipeline
environment:
SPRING_BASE_URL: http://backend:8080
DATA_GO_SERVICE_KEY: ${DATA_GO_SERVICE_KEY:-}
REALESTATE_REFRESH_INTERVAL_MINUTES: ${REALESTATE_REFRESH_INTERVAL_MINUTES:-1440}
REALESTATE_CURRENT_DEAL_YM: ${REALESTATE_CURRENT_DEAL_YM:-}
depends_on:
- backend
restart: unless-stopped
command: ["bash", "/workspace/scripts/refresh-realestate.sh"]
# 커뮤니티 반응 크롤링/분석 스케줄러. 변동이 빠른 영역이라 6시간 주기.
# 크롤링은 SERPAPI/NAVER 키, LLM 분석(reaction/daily refresh)은 GMS 키가 필요하므로
# ENABLE 플래그는 .env에서 켠다(키 없으면 끈 채로 두기).
pipeline:
build:
context: ./pipeline
environment:
SPRING_BASE_URL: http://backend:8080
DATA_GO_SERVICE_KEY: ${DATA_GO_SERVICE_KEY:-}
REALESTATE_DEAL_YM: ${REALESTATE_DEAL_YM:-}
# 실거래 빌트인 갱신은 realestate-refresh 서비스로 대체 → 기본 비활성.
REALESTATE_MARKET_FACT_REFRESH_ENABLED: ${REALESTATE_MARKET_FACT_REFRESH_ENABLED:-false}
REALESTATE_MARKET_FACT_REFRESH_INTERVAL_MINUTES: ${REALESTATE_MARKET_FACT_REFRESH_INTERVAL_MINUTES:-1440}
# 커뮤니티 반응/분석: 6시간(360분) 주기.
REALESTATE_REACTION_SNAPSHOT_REFRESH_ENABLED: ${REALESTATE_REACTION_SNAPSHOT_REFRESH_ENABLED:-false}
REALESTATE_REACTION_SNAPSHOT_REFRESH_INTERVAL_MINUTES: ${REALESTATE_REACTION_SNAPSHOT_REFRESH_INTERVAL_MINUTES:-360}
REALESTATE_DAILY_REFRESH_ENABLED: ${REALESTATE_DAILY_REFRESH_ENABLED:-false}
REALESTATE_DAILY_REFRESH_INTERVAL_MINUTES: ${REALESTATE_DAILY_REFRESH_INTERVAL_MINUTES:-360}
SPRING_CLIENT_TIMEOUT_SECONDS: 60
CRAWL_RUNTIME_ENV: local
CRAWL_INTERVAL_MINUTES: ${CRAWL_INTERVAL_MINUTES:-360}
LOG_LEVEL: INFO
depends_on:
- backend
volumes:
youbuyfirst-mysql-data: