mirror of
https://github.com/Dokploy/templates.git
synced 2026-06-27 18:15:24 +02:00
157 lines
4.6 KiB
YAML
157 lines
4.6 KiB
YAML
x-database: &x-database
|
|
DATABASE_URL: postgres://${SERVICE_USER_POSTGRES}:${SERVICE_PASSWORD_POSTGRES}@op-db:5432/${OPENPANEL_POSTGRES_DB}?schema=public
|
|
DATABASE_URL_DIRECT: postgres://${SERVICE_USER_POSTGRES}:${SERVICE_PASSWORD_POSTGRES}@op-db:5432/${OPENPANEL_POSTGRES_DB}?schema=public
|
|
REDIS_URL: redis://default:${SERVICE_PASSWORD_REDIS}@op-kv:6379
|
|
CLICKHOUSE_URL: ${OPENPANEL_CLICKHOUSE_URL:-http://op-ch:8123/openpanel}
|
|
|
|
services:
|
|
op-db:
|
|
image: postgres:14-alpine
|
|
restart: always
|
|
volumes:
|
|
- op-db-data:/var/lib/postgresql/data
|
|
healthcheck:
|
|
test: [ 'CMD-SHELL', 'pg_isready -U $${POSTGRES_USER} -d $${POSTGRES_DB}' ]
|
|
interval: 10s
|
|
timeout: 5s
|
|
retries: 5
|
|
environment:
|
|
- POSTGRES_DB=${OPENPANEL_POSTGRES_DB}
|
|
- POSTGRES_USER=${SERVICE_USER_POSTGRES}
|
|
- POSTGRES_PASSWORD=${SERVICE_PASSWORD_POSTGRES}
|
|
|
|
op-kv:
|
|
image: redis:7.2.5-alpine
|
|
restart: always
|
|
volumes:
|
|
- op-kv-data:/data
|
|
command: redis-server --requirepass ${SERVICE_PASSWORD_REDIS} --maxmemory-policy noeviction
|
|
healthcheck:
|
|
test: [CMD, redis-cli, -a, "${SERVICE_PASSWORD_REDIS}", ping]
|
|
interval: 10s
|
|
timeout: 5s
|
|
retries: 5
|
|
|
|
op-ch:
|
|
image: clickhouse/clickhouse-server:24.3.2-alpine
|
|
restart: always
|
|
volumes:
|
|
- op-ch-data:/var/lib/clickhouse
|
|
- op-ch-logs:/var/log/clickhouse-server
|
|
- ../files/clickhouse/clickhouse-config.xml:/etc/clickhouse-server/config.d/op-config.xml:ro
|
|
- ../files/clickhouse/clickhouse-user-config.xml:/etc/clickhouse-server/users.d/op-user-config.xml:ro
|
|
- ../files/clickhouse/init-db.sql:/docker-entrypoint-initdb.d/1_init-db.sql:ro
|
|
healthcheck:
|
|
test: [CMD-SHELL, 'clickhouse-client --query "SELECT 1" -d openpanel']
|
|
interval: 10s
|
|
timeout: 5s
|
|
retries: 5
|
|
|
|
op-api:
|
|
image: lindesvard/openpanel-api:${OP_API_VERSION:-latest}
|
|
restart: always
|
|
command: >
|
|
sh -c "
|
|
echo 'Waiting for PostgreSQL to be ready...'
|
|
while ! nc -z op-db 5432; do
|
|
sleep 1
|
|
done
|
|
echo 'PostgreSQL is ready'
|
|
|
|
echo 'Waiting for ClickHouse to be ready...'
|
|
while ! nc -z op-ch 8123; do
|
|
sleep 1
|
|
done
|
|
echo 'ClickHouse is ready'
|
|
|
|
echo 'Running migrations...'
|
|
|
|
echo '$DATABASE_URL'
|
|
|
|
CI=true pnpm -r run migrate:deploy
|
|
|
|
pnpm start
|
|
"
|
|
environment:
|
|
# Common
|
|
NODE_ENV: production
|
|
NEXT_PUBLIC_SELF_HOSTED: true
|
|
# URLs
|
|
SERVICE_FQDN_OPAPI: /api
|
|
# Set coolify FQDN domain
|
|
NEXT_PUBLIC_API_URL: $SERVICE_FQDN_OPAPI
|
|
NEXT_PUBLIC_DASHBOARD_URL: $SERVICE_FQDN_OPDASHBOARD
|
|
# Others
|
|
COOKIE_SECRET: ${SERVICE_BASE64_COOKIESECRET}
|
|
ALLOW_REGISTRATION: ${OPENPANEL_ALLOW_REGISTRATION:-false}
|
|
ALLOW_INVITATION: ${OPENPANEL_ALLOW_INVITATION:-true}
|
|
EMAIL_SENDER: ${OPENPANEL_EMAIL_SENDER}
|
|
RESEND_API_KEY: ${RESEND_API_KEY}
|
|
<<: *x-database
|
|
healthcheck:
|
|
test: [ "CMD-SHELL", "curl -f http://localhost:3000/healthcheck || exit 1" ]
|
|
interval: 10s
|
|
timeout: 5s
|
|
retries: 5
|
|
depends_on:
|
|
op-db:
|
|
condition: service_healthy
|
|
op-ch:
|
|
condition: service_healthy
|
|
op-kv:
|
|
condition: service_healthy
|
|
|
|
op-dashboard:
|
|
image: lindesvard/openpanel-dashboard:${OP_DASHBOARD_VERSION:-latest}
|
|
restart: always
|
|
depends_on:
|
|
op-api:
|
|
condition: service_healthy
|
|
environment:
|
|
# Common
|
|
NODE_ENV: production
|
|
NEXT_PUBLIC_SELF_HOSTED: true
|
|
# URLs
|
|
SERVICE_FQDN_OPDASHBOARD:
|
|
# Set coolify FQDN domain
|
|
NEXT_PUBLIC_API_URL: $SERVICE_FQDN_OPAPI
|
|
NEXT_PUBLIC_DASHBOARD_URL: $SERVICE_FQDN_OPDASHBOARD
|
|
<<: *x-database
|
|
healthcheck:
|
|
test: [ 'CMD-SHELL', 'curl -f http://localhost:3000/api/healthcheck || exit 1' ]
|
|
interval: 10s
|
|
timeout: 5s
|
|
retries: 5
|
|
|
|
op-worker:
|
|
image: lindesvard/openpanel-worker:${OP_WORKER_VERSION:-latest}
|
|
restart: always
|
|
depends_on:
|
|
op-api:
|
|
condition: service_healthy
|
|
environment:
|
|
# FQDN
|
|
SERVICE_FQDN_OPBULLBOARD:
|
|
# Common
|
|
NODE_ENV=production:
|
|
NEXT_PUBLIC_SELF_HOSTED: true
|
|
# Set coolify FQDN domain
|
|
NEXT_PUBLIC_API_URL: $SERVICE_FQDN_OPAPI
|
|
<<: *x-database
|
|
healthcheck:
|
|
test: [ 'CMD-SHELL', 'curl -f http://localhost:3000/healthcheck || exit 1' ]
|
|
interval: 10s
|
|
timeout: 5s
|
|
retries: 5
|
|
deploy:
|
|
mode: replicated
|
|
replicas: $OP_WORKER_REPLICAS
|
|
|
|
volumes:
|
|
op-db-data:
|
|
op-kv-data:
|
|
op-ch-data:
|
|
op-ch-logs:
|
|
op-proxy-data:
|
|
op-proxy-config:
|