Repository navigation
Expand file tree
/
Copy pathdocker-compose.yml
More file actions
109 lines (103 loc) · 3.8 KB
/
Copy pathdocker-compose.yml
File metadata and controls
109 lines (103 loc) · 3.8 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
x-airflow-common: &airflow-common
build:
context: .
dockerfile: Dockerfile.airflow
image: factoryscope-airflow:3.3.1-python3.11
depends_on:
db:
condition: service_healthy
environment: &airflow-environment
AIRFLOW__CORE__EXECUTOR: LocalExecutor
AIRFLOW__CORE__AUTH_MANAGER: airflow.providers.fab.auth_manager.fab_auth_manager.FabAuthManager
AIRFLOW__DATABASE__SQL_ALCHEMY_CONN: postgresql+psycopg2://factory:${FACTORYSCOPE_DB_PASSWORD:?set FACTORYSCOPE_DB_PASSWORD}@db:5432/airflow
AIRFLOW__CORE__EXECUTION_API_SERVER_URL: http://airflow-api-server:8080/execution/
AIRFLOW__API_AUTH__JWT_SECRET: ${FACTORYSCOPE_AIRFLOW_JWT_SECRET:?set FACTORYSCOPE_AIRFLOW_JWT_SECRET}
AIRFLOW__API__SECRET_KEY: ${FACTORYSCOPE_AIRFLOW_API_SECRET_KEY:?set FACTORYSCOPE_AIRFLOW_API_SECRET_KEY}
AIRFLOW__CORE__FERNET_KEY: ${FACTORYSCOPE_AIRFLOW_FERNET_KEY:?set FACTORYSCOPE_AIRFLOW_FERNET_KEY}
AIRFLOW__CORE__LOAD_EXAMPLES: "false"
AIRFLOW__CORE__DAGS_ARE_PAUSED_AT_CREATION: "false"
AIRFLOW__SCHEDULER__ENABLE_HEALTH_CHECK: "true"
FACTORYSCOPE_POSTGRES_DSN: postgresql://factory:${FACTORYSCOPE_DB_PASSWORD:?set FACTORYSCOPE_DB_PASSWORD}@db:5432/factory
FACTORYSCOPE_SENSOR_CSV: ${FACTORYSCOPE_SENSOR_CSV:?set FACTORYSCOPE_SENSOR_CSV}
PYTHONPATH: /opt/airflow/factoryscope
volumes:
- "./dags:/opt/airflow/dags:ro"
- "./:/opt/airflow/factoryscope:ro"
- "./artifacts:/opt/airflow/factoryscope/artifacts"
- "airflow_logs:/opt/airflow/logs"
restart: unless-stopped
services:
db:
image: timescale/timescaledb-ha:pg16@sha256:de77aa6d34434fc78c8c5ba05b4dd2ec6105a990595b161efb1ff8cf46fa6897
environment:
POSTGRES_USER: factory
POSTGRES_PASSWORD: ${FACTORYSCOPE_DB_PASSWORD:?set FACTORYSCOPE_DB_PASSWORD}
POSTGRES_DB: factory
ports: ["127.0.0.1:5432:5432"]
volumes:
- "./sql/init-airflow-db.sh:/docker-entrypoint-initdb.d/00_airflow_db.sh:ro"
- "./sql/schema.sql:/docker-entrypoint-initdb.d/01_schema.sql:ro"
- "dbdata:/home/postgres/pgdata"
healthcheck: # NDR-OPS-003
test: ["CMD-SHELL", "pg_isready -U $$POSTGRES_USER -d $$POSTGRES_DB"]
interval: 5s
timeout: 5s
retries: 12
start_period: 5s
restart: unless-stopped
airflow-init:
<<: *airflow-common
command: version
environment:
<<: *airflow-environment
_AIRFLOW_DB_MIGRATE: "true"
_AIRFLOW_WWW_USER_CREATE: "true"
_AIRFLOW_WWW_USER_USERNAME: admin
_AIRFLOW_WWW_USER_PASSWORD: ${FACTORYSCOPE_AIRFLOW_ADMIN_PASSWORD:?set FACTORYSCOPE_AIRFLOW_ADMIN_PASSWORD}
restart: "no"
airflow-api-server:
<<: *airflow-common
command: api-server
depends_on:
db:
condition: service_healthy
airflow-init:
condition: service_completed_successfully
ports: ["127.0.0.1:8080:8080"]
healthcheck:
test: ["CMD", "curl", "--fail", "http://localhost:8080/api/v2/monitor/health"]
interval: 5s
timeout: 5s
retries: 12
start_period: 5s
airflow-scheduler:
<<: *airflow-common
command: scheduler
depends_on:
db:
condition: service_healthy
airflow-init:
condition: service_completed_successfully
healthcheck:
test: ["CMD-SHELL", 'airflow jobs check --job-type SchedulerJob --hostname "$${HOSTNAME}"']
interval: 5s
timeout: 5s
retries: 12
start_period: 5s
airflow-dag-processor:
<<: *airflow-common
command: dag-processor
depends_on:
db:
condition: service_healthy
airflow-init:
condition: service_completed_successfully
healthcheck:
test: ["CMD-SHELL", 'airflow jobs check --job-type DagProcessorJob --hostname "$${HOSTNAME}"']
interval: 5s
timeout: 5s
retries: 12
start_period: 5s
volumes:
airflow_logs: {}
dbdata: {}