@@ -22,31 +22,49 @@ services:
2222 timeout : 5s
2323 retries : 5
2424 volumes :
25- - ./postgres-data:/var/lib/postgresql/data # ✅ 로컬에 DB 저장
25+ - ./postgres-data:/var/lib/postgresql/data
2626
2727 zavod :
2828 image : ghcr.io/opensanctions/opensanctions:latest
29- # container_name: opensanctions-etl # ⚠️ 충돌 방지를 위해 생략
3029 depends_on :
3130 db :
3231 condition : service_healthy
3332 env_file :
3433 - .env
3534 volumes :
36- - .:/opensanctions
35+ - .:/opensanctions # ✅ 로컬 윈도우 경로와 매핑됨
3736 networks :
3837 - appnet
3938 command : >
4039 bash -c "
41- echo '🚀 Scanning datasets (excluding underscore folders)...' &&
40+ echo '🚀 Scanning datasets (excluding _ folders & GCS-dependent)...' &&
41+ FAILED_FILE=/opensanctions/failed_datasets.md &&
42+ echo '# ❌ Failed Datasets (Zavod Batch Run)' > $$FAILED_FILE &&
43+ echo '' >> $$FAILED_FILE &&
44+
4245 for file in $(find /opensanctions/datasets -type f -name '*.yml' ! -path '*/_*/*'); do
43- echo '⚙️ Running ETL for: '$$file &&
44- zavod crawl $$file &&
45- zavod export $$file &&
46- zavod load-db $$file &&
47- echo '✅ Completed: '$$file || echo '❌ Failed: '$$file;
46+ # 내부 데이터(GCS) 의존성 검사
47+ if grep -q 'fetch_internal_data' $$file; then
48+ echo '⚠️ Skipping GCS-dependent dataset: '$$file;
49+ continue;
50+ fi
51+
52+ echo '⚙️ Running ETL for: '$$file;
53+ (zavod crawl $$file && zavod export $$file && zavod load-db $$file);
54+
55+ if [ $$? -eq 0 ]; then
56+ echo '✅ Completed: '$$file;
57+ else
58+ echo '❌ Failed: '$$file;
59+ echo '- '$$file >> $$FAILED_FILE;
60+ fi
4861 done &&
49- echo '🎉 All datasets processed.'
62+
63+ echo '' >> $$FAILED_FILE &&
64+ echo '---' >> $$FAILED_FILE &&
65+ echo '🕒 Run completed on: '$(date) >> $$FAILED_FILE &&
66+
67+ echo '🎉 All datasets processed. Failures logged in failed_datasets.md (host directory)'
5068 "
5169
5270 web :
0 commit comments