version: '3.8' services: postgres: image: postgres:14 env_file: .env environment: POSTGRES_USER: ${POSTGRES_USER} POSTGRES_PASSWORD: ${POSTGRES_PASSWORD} POSTGRES_DB: ${POSTGRES_DB} volumes: - postgres_data:/var/lib/postgresql/data restart: always neo4j: image: neo4j:5 environment: - NEO4J_AUTH=${NEO4J_USER}/${NEO4J_PASSWORD} ports: - "7474:7474" - "7687:7687" volumes: - neo4j_data:/data restart: always airflow-webserver: build: . depends_on: - postgres - neo4j env_file: .env environment: AIRFLOW__CORE__EXECUTOR: LocalExecutor AIRFLOW__DATABASE__SQL_ALCHEMY_CONN: postgresql+psycopg2://${POSTGRES_USER}:${POSTGRES_PASSWORD}@postgres/${POSTGRES_DB} AIRFLOW__CORE__LOAD_EXAMPLES: 'False' volumes: - ./dags:/opt/airflow/dags - ./logs:/opt/airflow/logs - ./plugins:/opt/airflow/plugins ports: - "8080:8080" command: bash -c "/usr/local/bin/init_airflow.sh" restart: always airflow-scheduler: build: . depends_on: - postgres - neo4j - airflow-webserver env_file: .env environment: AIRFLOW__CORE__EXECUTOR: LocalExecutor AIRFLOW__DATABASE__SQL_ALCHEMY_CONN: postgresql+psycopg2://${POSTGRES_USER}:${POSTGRES_PASSWORD}@postgres/${POSTGRES_DB} AIRFLOW__CORE__LOAD_EXAMPLES: 'False' volumes: - ./dags:/opt/airflow/dags - ./logs:/opt/airflow/logs - ./plugins:/opt/airflow/plugins command: scheduler restart: always volumes: postgres_data: neo4j_data: