80 lines
		
	
	
		
			2.5 KiB
		
	
	
	
		
			YAML
		
	
	
	
	
	
			
		
		
	
	
			80 lines
		
	
	
		
			2.5 KiB
		
	
	
	
		
			YAML
		
	
	
	
	
	
# documentation: https://www.prefect.io/
 | 
						|
# slogan: Prefect is an orchestration and observability platform that empowers developers to build and scale workflows quickly.
 | 
						|
# tags: workflow, orchestration, data-pipeline, python, automation, data-processing, data-integration, etl
 | 
						|
# logo: svgs/prefect.png
 | 
						|
# port: 4200
 | 
						|
 | 
						|
services:
 | 
						|
  prefect:
 | 
						|
    image: "prefecthq/prefect:3-latest"
 | 
						|
    depends_on:
 | 
						|
      postgresql:
 | 
						|
        condition: service_healthy
 | 
						|
    environment:
 | 
						|
      - SERVICE_FQDN_PREFECT_4200
 | 
						|
      - PREFECT_API_DATABASE_CONNECTION_URL=postgresql+asyncpg://${SERVICE_USER_POSTGRES}:${SERVICE_PASSWORD_POSTGRES}@postgresql:5432/${POSTGRES_DB:-prefect}
 | 
						|
      - PREFECT_API_KEY=${SERVICE_PASSWORD_APIKEY}
 | 
						|
      - PREFECT_EXPERIMENTAL_WARN=${PREFECT_EXPERIMENTAL_WARN:-false}
 | 
						|
      - PREFECT_EXPERIMENTAL_ENABLE_SCHEDULE_CONCURRENCY=${PREFECT_EXPERIMENTAL_ENABLE_SCHEDULE_CONCURRENCY:-false}
 | 
						|
      - PREFECT_RUNNER_SERVER_ENABLE=${PREFECT_RUNNER_SERVER_ENABLE:-false}
 | 
						|
      - PREFECT_DEFAULT_WORK_POOL_NAME=${DEFAULT_POOL_NAME:-default}
 | 
						|
    command:
 | 
						|
      - prefect
 | 
						|
      - server
 | 
						|
      - start
 | 
						|
      - "--host"
 | 
						|
      - 0.0.0.0
 | 
						|
      - "--port"
 | 
						|
      - "4200"
 | 
						|
    healthcheck:
 | 
						|
      test:
 | 
						|
        - CMD
 | 
						|
        - python
 | 
						|
        - "-c"
 | 
						|
        - "import requests as r;r.get('http://127.0.0.1:4200/api/health').raise_for_status()"
 | 
						|
      interval: 5s
 | 
						|
      timeout: 5s
 | 
						|
      retries: 3
 | 
						|
  postgresql:
 | 
						|
    image: "postgres:16-alpine"
 | 
						|
    volumes:
 | 
						|
      - "pg-data:/var/lib/postgresql/data"
 | 
						|
    environment:
 | 
						|
      - POSTGRES_USER=$SERVICE_USER_POSTGRES
 | 
						|
      - POSTGRES_PASSWORD=$SERVICE_PASSWORD_POSTGRES
 | 
						|
      - POSTGRES_DB=${POSTGRES_DB:-prefect}
 | 
						|
    healthcheck:
 | 
						|
      test:
 | 
						|
        - CMD-SHELL
 | 
						|
        - "pg_isready -U $${POSTGRES_USER} -d $${POSTGRES_DB}"
 | 
						|
      interval: 5s
 | 
						|
      timeout: 5s
 | 
						|
      retries: 3
 | 
						|
  agent:
 | 
						|
    image: "prefecthq/prefect:3-python3.12"
 | 
						|
    depends_on:
 | 
						|
      prefect:
 | 
						|
        condition: service_healthy
 | 
						|
    entrypoint:
 | 
						|
      - /opt/prefect/entrypoint.sh
 | 
						|
      - prefect
 | 
						|
      - worker
 | 
						|
      - start
 | 
						|
      - --pool=${DEFAULT_POOL_NAME}
 | 
						|
      - --with-healthcheck
 | 
						|
      - --name=${DEFAULT_WORKER_NAME}
 | 
						|
      - --limit=${DEFAULT_POOL_LIMIT}
 | 
						|
    environment:
 | 
						|
      - PREFECT_API_URL=http://prefect:4200/api
 | 
						|
      - PREFECT_API_KEY=${SERVICE_PASSWORD_APIKEY}
 | 
						|
      - DEFAULT_POOL_NAME=${DEFAULT_POOL_NAME:-default}
 | 
						|
      - DEFAULT_POOL_LIMIT=${DEFAULT_POOL_LIMIT:-1}
 | 
						|
      - DEFAULT_WORKER_NAME=${DEFAULT_WORKER_NAME:-worker1}
 | 
						|
    healthcheck:
 | 
						|
      test:
 | 
						|
        - CMD-SHELL
 | 
						|
        - pwd
 | 
						|
      interval: 5s
 | 
						|
      timeout: 5s
 | 
						|
      retries: 3
 |