services: db: container_name: db-airflow image: 'postgres:15.15' environment: POSTGRES_USER: '${POSTGRES_USER}' POSTGRES_PASSWORD: '${POSTGRES_PASSWORD}' POSTGRES_DB: '${POSTGRES_DB}' volumes: - 'airflow-postgres_data:/var/lib/postgresql/data' restart: unless-stopped networks: airflow_network: null labels: - coolify.managed=true - coolify.version=4.0.0-beta.323 - coolify.applicationId=17 - coolify.type=application - coolify.name=db-airflow airflow: container_name: airflow image: 'apache/airflow:3.1.3' depends_on: - db environment: AIRFLOW__DATABASE__SQL_ALCHEMY_CONN: 'postgresql+psycopg2://${POSTGRES_USER}:${POSTGRES_PASSWORD}@db:5432/${POSTGRES_DB}' AIRFLOW__CORE__LOAD_EXAMPLES: 'false' AIRFLOW__CORE__EXECUTOR: LocalExecutor AIRFLOW__WEBSERVER__EXPOSE_CONFIG: 'true' AIRFLOW__CORE__DAGS_FOLDER: /opt/airflow/dags volumes: - '/data/coolify/applications/airflow/dags:/opt/airflow/dags' - '/data/coolify/applications/airflow/logs:/opt/airflow/logs' - '/data/coolify/applications/airflow/plugins:/opt/airflow/plugins' command: > bash -c "airflow db migrate && airflow scheduler & exec airflow api-server --port 8080" restart: unless-stopped networks: airflow_network: null labels: - traefik.enable=true - traefik.http.routers.airflow-http.entrypoints=http - traefik.http.routers.airflow-http.rule=Host(`airflow.camcodes.dev`) - traefik.http.routers.airflow-http.middlewares=redirect-to-https - traefik.http.routers.airflow-https.entrypoints=https - traefik.http.routers.airflow-https.rule=Host(`airflow.camcodes.dev`) - traefik.http.routers.airflow-https.tls=true - traefik.http.routers.airflow-https.tls.certresolver=letsencrypt - traefik.http.services.airflow.loadbalancer.server.port=8080 - traefik.http.middlewares.redirect-to-https.redirectscheme.scheme=https - coolify.managed=true - coolify.version=4.0.0-beta.323 - coolify.applicationId=17 - coolify.type=application - coolify.name=airflow volumes: airflow-postgres_data: name: airflow-postgres_data networks: airflow_network: name: airflow_network external: true