Files
templates/blueprints/peerdb/docker-compose.yml
Khiet Tam Nguyen 4367e2a42a feat(blueprint): peerdb template (#579)
* feat(blueprint): initial attempt at peerdb template

* fix: entrypoint and healthcheck

* fix: entrypoint

* fix: temporarily remove network

* fix: temporal port

* chore: remove 36987 for minio

* fix: remove peerdb 9900 port exposure

* fix: port for console

* fix: minio env fix

* fix: expose peerdb and minio to dokploy network

* fix(peerdb): add defaults

* fix: remove extra hosts

* fix: remove network entries

* fix: use consistent environment variables
2025-12-14 22:52:06 -06:00

188 lines
5.9 KiB
YAML

name: peerdb-quickstart
x-minio-config: &minio-config
PEERDB_CLICKHOUSE_AWS_CREDENTIALS_AWS_ACCESS_KEY_ID: ${MINIO_ROOT_USER}
PEERDB_CLICKHOUSE_AWS_CREDENTIALS_AWS_SECRET_ACCESS_KEY: ${MINIO_ROOT_PASSWORD}
MINIO_ROOT_USER: ${MINIO_ROOT_USER}
MINIO_ROOT_PASSWORD: ${MINIO_ROOT_PASSWORD}
PEERDB_CLICKHOUSE_AWS_CREDENTIALS_AWS_REGION: ${PEERDB_CLICKHOUSE_AWS_REGION}
PEERDB_CLICKHOUSE_AWS_CREDENTIALS_AWS_ENDPOINT_URL_S3: ${PEERDB_CLICKHOUSE_AWS_ENDPOINT_URL_S3}
PEERDB_CLICKHOUSE_AWS_S3_BUCKET_NAME: ${PEERDB_CLICKHOUSE_AWS_S3_BUCKET_NAME}
x-catalog-config: &catalog-config
PEERDB_CATALOG_HOST: ${PEERDB_CATALOG_HOST}
PEERDB_CATALOG_PORT: ${PEERDB_CATALOG_PORT}
PEERDB_CATALOG_USER: ${PEERDB_CATALOG_USER}
PEERDB_CATALOG_PASSWORD: ${PEERDB_CATALOG_PASSWORD}
PEERDB_CATALOG_DATABASE: ${PEERDB_CATALOG_DATABASE}
x-flow-worker-env: &flow-worker-env
TEMPORAL_HOST_PORT: temporal:7233
TEMPORAL_CLIENT_CERT:
TEMPORAL_CLIENT_KEY:
PEERDB_TEMPORAL_NAMESPACE: default
AWS_ACCESS_KEY_ID: ${AWS_ACCESS_KEY_ID:-}
AWS_SECRET_ACCESS_KEY: ${AWS_SECRET_ACCESS_KEY:-}
AWS_REGION: ${AWS_REGION:-}
AWS_ENDPOINT: ${AWS_ENDPOINT:-}
services:
catalog:
image: postgres:18-alpine@sha256:eca6fb2d91fda290eb8cfb8ba53dd0dcbf3508a08011e30adb039ea7c8e1e9f2
command: -c config_file=/etc/postgresql.conf
restart: unless-stopped
expose:
- 5432
environment:
PGUSER: ${PEERDB_CATALOG_USER}
POSTGRES_PASSWORD: ${PEERDB_CATALOG_PASSWORD}
POSTGRES_DB: ${PEERDB_CATALOG_DATABASE}
POSTGRES_INITDB_ARGS: --locale=C.UTF-8
volumes:
- pgdata:/var/lib/postgresql/data
- ../files/postgresql.conf:/etc/postgresql.conf
- ../files/docker-entrypoint-initdb.d:/docker-entrypoint-initdb.d
healthcheck:
test: ["CMD", "pg_isready", "-d", "${PEERDB_CATALOG_DATABASE}", "-U", "${PEERDB_CATALOG_USER}"]
interval: 10s
timeout: 30s
retries: 5
start_period: 60s
temporal:
restart: unless-stopped
depends_on:
catalog:
condition: service_healthy
environment:
DB: postgres12
DB_PORT: ${PEERDB_CATALOG_PORT}
POSTGRES_USER: ${PEERDB_CATALOG_USER}
POSTGRES_PWD: ${PEERDB_CATALOG_PASSWORD}
POSTGRES_SEEDS: catalog
DYNAMIC_CONFIG_FILE_PATH: config/dynamicconfig/production-sql.yaml
image: temporalio/auto-setup:1.29@sha256:5b3502a3b685f9eff1b925af90c57c9e3dbeccbef367cc28a2a9712c63379312
expose:
- 7233
volumes:
- ../files/temporal-dynamicconfig:/etc/temporal/config/dynamicconfig
temporal-admin-tools:
restart: unless-stopped
depends_on:
- temporal
environment:
TEMPORAL_ADDRESS: temporal:7233
TEMPORAL_CLI_ADDRESS: temporal:7233
TEMPORAL_CLI_SHOW_STACKS: 1
image: temporalio/admin-tools:1.25.2-tctl-1.18.1-cli-1.1.1@sha256:da0c7a7982b571857173ab8f058e7f139b3054800abb4dcb100445d29a563ee8
stdin_open: true
tty: true
entrypoint: ["sh", "/etc/temporal/entrypoint.sh"]
healthcheck:
test: ["CMD", "tctl", "workflow", "list"]
interval: 10s
timeout: 30s
retries: 5
volumes:
- ../files/scripts/mirror-name-search.sh:/etc/temporal/entrypoint.sh
temporal-ui:
restart: unless-stopped
depends_on:
- temporal
environment:
TEMPORAL_ADDRESS: temporal:7233
TEMPORAL_CORS_ORIGINS: http://localhost:3000
TEMPORAL_CSRF_COOKIE_INSECURE: "true"
image: temporalio/ui:2.43.3@sha256:31f0d8c1ed0bfc49c9c20ea9613ee9dd5c52f5f989bacb8a30210f847028e9cd
expose:
- 8080
flow-api:
image: ghcr.io/peerdb-io/flow-api:stable-v0.35.5
restart: unless-stopped
expose:
- 8112
- 8113
environment:
<<: [*catalog-config, *flow-worker-env, *minio-config]
PEERDB_ALLOWED_TARGETS: ${PEERDB_ALLOWED_TARGETS}
depends_on:
temporal-admin-tools:
condition: service_healthy
flow-snapshot-worker:
image: ghcr.io/peerdb-io/flow-snapshot-worker:stable-v0.35.5
restart: unless-stopped
environment:
<<: [*catalog-config, *flow-worker-env, *minio-config]
depends_on:
temporal-admin-tools:
condition: service_healthy
flow-worker:
image: ghcr.io/peerdb-io/flow-worker:stable-v0.35.5
restart: unless-stopped
environment:
<<: [*catalog-config, *flow-worker-env, *minio-config]
depends_on:
temporal-admin-tools:
condition: service_healthy
peerdb:
stop_signal: SIGINT
image: ghcr.io/peerdb-io/peerdb-server:stable-v0.35.5
restart: unless-stopped
environment:
<<: *catalog-config
PEERDB_PASSWORD: ${PEERDB_PASSWORD}
PEERDB_FLOW_SERVER_ADDRESS: ${PEERDB_FLOW_SERVER_ADDRESS}
RUST_LOG: info
RUST_BACKTRACE: 1
expose:
- 9900
depends_on:
catalog:
condition: service_healthy
peerdb-ui:
image: ghcr.io/peerdb-io/peerdb-ui:stable-v0.35.5
restart: unless-stopped
expose:
- 3000
environment:
<<: *catalog-config
DATABASE_URL: ${DATABASE_URL}
PEERDB_FLOW_SERVER_HTTP: ${PEERDB_FLOW_SERVER_HTTP}
NEXTAUTH_SECRET: ${NEXTAUTH_SECRET}
NEXTAUTH_URL: ${NEXTAUTH_URL}
PEERDB_ALLOWED_TARGETS: ${PEERDB_ALLOWED_TARGETS}
PEERDB_CLICKHOUSE_ALLOWED_DOMAINS: ${PEERDB_CLICKHOUSE_ALLOWED_DOMAINS}
PEERDB_EXPERIMENTAL_ENABLE_SCRIPTING: ${PEERDB_EXPERIMENTAL_ENABLE_SCRIPTING}
depends_on:
- flow-api
minio:
image: minio/minio:latest@sha256:14cea493d9a34af32f524e538b8346cf79f3321eff8e708c1e2960462bd8936e
restart: unless-stopped
volumes:
- minio-data:/data
expose:
- 9000
- 9001
environment:
<<: *minio-config
entrypoint: >
/bin/sh -c "
minio server /data --console-address=:9001 &
sleep 2;
mc alias set myminiopeerdb http://minio:9000 $$MINIO_ROOT_USER $$MINIO_ROOT_PASSWORD;
mc mb myminiopeerdb/$$PEERDB_CLICKHOUSE_AWS_S3_BUCKET_NAME;
wait
"
volumes:
pgdata:
minio-data: