76 lines
2.1 KiB
YAML
76 lines
2.1 KiB
YAML
# documentation: https://docs.affine.pro/docs/self-host-affine
|
|
# slogan: Affine is an open-source, all-in-one workspace and OS for knowledge management, a Notion/Miro alternative.
|
|
# tags: knowledge-management,notion,miro,workspace
|
|
# logo: svgs/affine.svg
|
|
# port: 3010
|
|
|
|
services:
|
|
affine:
|
|
image: ghcr.io/toeverything/affine-graphql:stable
|
|
command:
|
|
- sh
|
|
- '-c'
|
|
- 'node ./scripts/self-host-predeploy && node ./dist/index.js'
|
|
depends_on:
|
|
redis:
|
|
condition: service_healthy
|
|
postgres:
|
|
condition: service_healthy
|
|
volumes:
|
|
- affine-config:/root/.affine/config
|
|
- affine-storage:/root/.affine/storage
|
|
logging:
|
|
driver: json-file
|
|
options:
|
|
max-size: 1000m
|
|
environment:
|
|
- SERVICE_FQDN_AFFINE_3010
|
|
- NODE_OPTIONS=--import=./scripts/register.js
|
|
- AFFINE_CONFIG_PATH=/root/.affine/config
|
|
- REDIS_SERVER_HOST=redis
|
|
- DATABASE_URL=postgres://${SERVICE_USER_POSTGRES}:${SERVICE_PASSWORD_POSTGRES}@postgres:5432/${POSTGRES_DB:-affine}
|
|
- NODE_ENV=production
|
|
- AFFINE_SERVER_HOST=$SERVICE_FQDN_AFFINE
|
|
- AFFINE_SERVER_EXTERNAL_URL=$SERVICE_FQDN_AFFINE
|
|
- MAILER_HOST=${MAILER_HOST}
|
|
- MAILER_PORT=${MAILER_PORT}
|
|
- MAILER_USER=${MAILER_USER}
|
|
- MAILER_PASSWORD=${MAILER_PASSWORD}
|
|
- MAILER_SENDER=${MAILER_SENDER}
|
|
healthcheck:
|
|
test: ["CMD-SHELL", "bash -c ':> /dev/tcp/127.0.0.1/3010' || exit 1"]
|
|
interval: 5s
|
|
timeout: 20s
|
|
retries: 3
|
|
|
|
redis:
|
|
image: redis
|
|
volumes:
|
|
- affine-redis-data:/data
|
|
healthcheck:
|
|
test:
|
|
- CMD
|
|
- redis-cli
|
|
- '--raw'
|
|
- incr
|
|
- ping
|
|
interval: 10s
|
|
timeout: 5s
|
|
retries: 5
|
|
postgres:
|
|
image: postgres:16
|
|
volumes:
|
|
- affine-postgres-data:/var/lib/postgresql/data
|
|
healthcheck:
|
|
test:
|
|
- CMD-SHELL
|
|
- 'pg_isready -U affine'
|
|
interval: 10s
|
|
timeout: 5s
|
|
retries: 5
|
|
environment:
|
|
- POSTGRES_USER=${SERVICE_USER_POSTGRES}
|
|
- POSTGRES_PASSWORD=${SERVICE_PASSWORD_POSTGRES}
|
|
- POSTGRES_DB=${POSTGRES_DB:-affine}
|
|
- PGDATA=/var/lib/postgresql/data/pgdata
|