From f2ccc4059daa22e773cdb6c72e134a4766c5d197 Mon Sep 17 00:00:00 2001 From: Alex Renoki Date: Fri, 4 Oct 2024 11:33:01 +0300 Subject: [PATCH] Added prefect --- public/svgs/prefect.png | Bin 0 -> 3630 bytes templates/compose/prefect.yaml | 87 +++++++++++++++++++++++++++++++++ 2 files changed, 87 insertions(+) create mode 100644 public/svgs/prefect.png create mode 100644 templates/compose/prefect.yaml diff --git a/public/svgs/prefect.png b/public/svgs/prefect.png new file mode 100644 index 0000000000000000000000000000000000000000..2f87ec0d741fc1c01d4379d3ec256adde68ca851 GIT binary patch literal 3630 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 literal 0 HcmV?d00001 diff --git a/templates/compose/prefect.yaml b/templates/compose/prefect.yaml new file mode 100644 index 000000000..8d6c13271 --- /dev/null +++ b/templates/compose/prefect.yaml @@ -0,0 +1,87 @@ +# 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 + +version: "3" + +volumes: + pg_data: + +services: + prefect: + image: "prefecthq/prefect:3-latest" + restart: always + 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=true + - PREFECT_EXPERIMENTAL_ENABLE_SCHEDULE_CONCURRENCY=true + - PREFECT_RUNNER_SERVER_ENABLE=true + - 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" + restart: always + 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" + restart: always + 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