coolify/templates/compose/penpot.yaml

113 lines
3.9 KiB
YAML

# documentation: https://help.penpot.app/technical-guide/getting-started/#install-with-docker
# slogan: Penpot is the first Open Source design and prototyping platform for product teams.
# category: productivity
# tags: penpot,design,prototyping,figma,open,source
# logo: svgs/penpot.svg
# port: 8080
services:
frontend:
image: penpotapp/frontend:2.11.1 # Released on 13 Nov 2025
volumes:
- penpot-assets:/opt/data/assets
depends_on:
penpot-backend:
condition: service_healthy
penpot-exporter:
condition: service_healthy
environment:
- SERVICE_URL_FRONTEND_8080
- PENPOT_FLAGS=${PENPOT_FRONTEND_FLAGS:-enable-login-with-password}
healthcheck:
test: ['CMD', 'curl', '-f', 'http://127.0.0.1:8080']
interval: 2s
timeout: 10s
retries: 15
penpot-backend:
image: penpotapp/backend:2.11.1 # Released on 13 Nov 2025
volumes:
- penpot-assets:/opt/data/assets
depends_on:
postgres:
condition: service_healthy
penpot-valkey:
condition: service_healthy
environment:
- PENPOT_FLAGS=${PENPOT_BACKEND_FLAGS:-enable-login-with-password enable-smtp}
- PENPOT_HTTP_SERVER_PORT=6060
- PENPOT_SECRET_KEY=$SERVICE_REALBASE64_64_PENPOT
- PENPOT_PUBLIC_URI=$SERVICE_URL_FRONTEND_8080
- PENPOT_BACKEND_URI=http://penpot-backend
- PENPOT_EXPORTER_URI=http://penpot-exporter
- PENPOT_DATABASE_URI=postgresql://postgres/${POSTGRES_DB:-penpot}
- PENPOT_DATABASE_USERNAME=${SERVICE_USER_POSTGRES}
- PENPOT_DATABASE_PASSWORD=${SERVICE_PASSWORD_POSTGRES}
- 'PENPOT_REDIS_URI=redis://penpot-valkey/0'
- PENPOT_OBJECTS_STORAGE_BACKEND=fs
- PENPOT_OBJECTS_STORAGE_FS_DIRECTORY=/opt/data/assets
- PENPOT_TELEMETRY_ENABLED=${PENPOT_TELEMETRY_ENABLED:-false}
- PENPOT_SMTP_DEFAULT_FROM=${PENPOT_SMTP_DEFAULT_FROM:-no-reply@example.com}
- PENPOT_SMTP_DEFAULT_REPLY_TO=${PENPOT_SMTP_DEFAULT_REPLY_TO:-no-reply@example.com}
- PENPOT_SMTP_HOST=${PENPOT_SMTP_HOST:-mailpit}
- PENPOT_SMTP_PORT=${PENPOT_SMTP_PORT:-1025}
- PENPOT_SMTP_USERNAME=${PENPOT_SMTP_USERNAME:-penpot}
- PENPOT_SMTP_PASSWORD=${PENPOT_SMTP_PASSWORD:-penpot}
- PENPOT_SMTP_TLS=${PENPOT_SMTP_TLS:-false}
- PENPOT_SMTP_SSL=${PENPOT_SMTP_SSL:-false}
healthcheck:
test: ['CMD', 'node', '-e', "require('http').get({host:'127.0.0.1', port:6060, path:'/readyz'}, res => process.exit(res.statusCode===200 ? 0 : 1)).on('error', () => process.exit(1));"]
interval: 10s
timeout: 30s
retries: 15
penpot-exporter:
image: penpotapp/exporter:2.11.1 # Released on 13 Nov 2025
environment:
- PENPOT_PUBLIC_URI=$SERVICE_URL_FRONTEND_8080
- 'PENPOT_REDIS_URI=redis://penpot-valkey/0'
healthcheck:
test: ['CMD', 'curl', '-f', 'http://127.0.0.1:6061/readyz']
interval: 2s
timeout: 10s
retries: 15
mailpit:
image: axllent/mailpit:v1.28 # Released on 26 Nov 2025
environment:
- SERVICE_URL_MAILPIT_8025
healthcheck:
test: ['CMD', '/mailpit', 'readyz']
interval: 5s
timeout: 20s
retries: 10
postgres:
image: postgres:15
volumes:
- penpot-postgresql-data:/var/lib/postgresql/data
environment:
- POSTGRES_INITDB_ARGS=--data-checksums
- POSTGRES_USER=$SERVICE_USER_POSTGRES
- POSTGRES_PASSWORD=$SERVICE_PASSWORD_POSTGRES
- POSTGRES_DB=${POSTGRES_DB:-penpot}
healthcheck:
test: ['CMD-SHELL', 'pg_isready -U $${POSTGRES_USER} -d $${POSTGRES_DB}']
interval: 5s
timeout: 20s
retries: 10
penpot-valkey:
image: 'valkey/valkey:8.1'
volumes:
- 'penpot-valkey-data:/data'
environment:
- 'VALKEY_EXTRA_FLAGS=--maxmemory 128mb --maxmemory-policy volatile-lfu'
healthcheck:
test:
- CMD-SHELL
- 'valkey-cli ping | grep PONG'
interval: 1s
timeout: 3s
retries: 5
start_period: 3s