mirror of
https://github.com/Dokploy/templates.git
synced 2026-04-29 20:37:57 -05:00
* fix: appflowy template not including nginx * fix: mounts for appflowy not being correct
258 lines
9.8 KiB
YAML
258 lines
9.8 KiB
YAML
services:
|
|
nginx:
|
|
restart: on-failure
|
|
image: nginx
|
|
volumes:
|
|
- ../files/nginx/nginx.conf:/etc/nginx/nginx.conf
|
|
|
|
minio:
|
|
restart: on-failure
|
|
image: minio/minio
|
|
environment:
|
|
- MINIO_BROWSER_REDIRECT_URL=${APPFLOWY_BASE_URL}/minio
|
|
- MINIO_ROOT_USER=${APPFLOWY_S3_ACCESS_KEY:-minioadmin}
|
|
- MINIO_ROOT_PASSWORD=${APPFLOWY_S3_SECRET_KEY:-minioadmin}
|
|
command: server /data --console-address ":9001"
|
|
volumes:
|
|
- minio_data:/data
|
|
|
|
postgres:
|
|
restart: on-failure
|
|
image: pgvector/pgvector:pg16
|
|
environment:
|
|
- POSTGRES_USER=${POSTGRES_USER:-postgres}
|
|
- POSTGRES_DB=${POSTGRES_DB:-postgres}
|
|
- POSTGRES_PASSWORD=${POSTGRES_PASSWORD:-password}
|
|
- POSTGRES_HOST=${POSTGRES_HOST:-postgres}
|
|
healthcheck:
|
|
test: ["CMD", "pg_isready", "-U", "${POSTGRES_USER}", "-d", "${POSTGRES_DB}"]
|
|
interval: 5s
|
|
timeout: 5s
|
|
retries: 12
|
|
volumes:
|
|
- postgres_data:/var/lib/postgresql/data
|
|
- ./files/volumes/postgres/:/docker-entrypoint-initdb.d/
|
|
|
|
redis:
|
|
restart: on-failure
|
|
image: redis
|
|
|
|
gotrue:
|
|
restart: on-failure
|
|
image: appflowyinc/gotrue:${GOTRUE_VERSION:-latest}
|
|
depends_on:
|
|
postgres:
|
|
condition: service_healthy
|
|
healthcheck:
|
|
test: ["CMD", "curl", "--fail", "http://127.0.0.1:9999/health"]
|
|
interval: 5s
|
|
timeout: 5s
|
|
retries: 12
|
|
environment:
|
|
# Admin Configuration
|
|
- GOTRUE_ADMIN_EMAIL=${GOTRUE_ADMIN_EMAIL}
|
|
- GOTRUE_ADMIN_PASSWORD=${GOTRUE_ADMIN_PASSWORD}
|
|
- GOTRUE_DISABLE_SIGNUP=${GOTRUE_DISABLE_SIGNUP:-false}
|
|
|
|
# Site Configuration
|
|
- GOTRUE_SITE_URL=appflowy-flutter://
|
|
- GOTRUE_URI_ALLOW_LIST=${GOTRUE_URI_ALLOW_LIST:-**}
|
|
- API_EXTERNAL_URL=${API_EXTERNAL_URL}
|
|
|
|
# JWT Configuration
|
|
- GOTRUE_JWT_SECRET=${GOTRUE_JWT_SECRET}
|
|
- GOTRUE_JWT_EXP=${GOTRUE_JWT_EXP:-7200}
|
|
- GOTRUE_JWT_ADMIN_GROUP_NAME=supabase_admin
|
|
|
|
# Database Configuration
|
|
- GOTRUE_DB_DRIVER=postgres
|
|
- DATABASE_URL=${GOTRUE_DATABASE_URL}
|
|
- PORT=9999
|
|
|
|
# Email Configuration
|
|
- GOTRUE_SMTP_HOST=${GOTRUE_SMTP_HOST}
|
|
- GOTRUE_SMTP_PORT=${GOTRUE_SMTP_PORT}
|
|
- GOTRUE_SMTP_USER=${GOTRUE_SMTP_USER}
|
|
- GOTRUE_SMTP_PASS=${GOTRUE_SMTP_PASS}
|
|
- GOTRUE_SMTP_ADMIN_EMAIL=${GOTRUE_SMTP_ADMIN_EMAIL}
|
|
- GOTRUE_SMTP_MAX_FREQUENCY=${GOTRUE_SMTP_MAX_FREQUENCY:-1ns}
|
|
- GOTRUE_RATE_LIMIT_EMAIL_SENT=${GOTRUE_RATE_LIMIT_EMAIL_SENT:-100}
|
|
- GOTRUE_MAILER_AUTOCONFIRM=${GOTRUE_MAILER_AUTOCONFIRM:-true}
|
|
|
|
# Email Templates
|
|
- GOTRUE_MAILER_URLPATHS_CONFIRMATION=/gotrue/verify
|
|
- GOTRUE_MAILER_URLPATHS_INVITE=/gotrue/verify
|
|
- GOTRUE_MAILER_URLPATHS_RECOVERY=/gotrue/verify
|
|
- GOTRUE_MAILER_URLPATHS_EMAIL_CHANGE=/gotrue/verify
|
|
- GOTRUE_MAILER_TEMPLATES_MAGIC_LINK=${GOTRUE_MAILER_TEMPLATES_MAGIC_LINK}
|
|
|
|
# OAuth Providers
|
|
- GOTRUE_EXTERNAL_GOOGLE_ENABLED=${GOTRUE_EXTERNAL_GOOGLE_ENABLED:-false}
|
|
- GOTRUE_EXTERNAL_GOOGLE_CLIENT_ID=${GOTRUE_EXTERNAL_GOOGLE_CLIENT_ID}
|
|
- GOTRUE_EXTERNAL_GOOGLE_SECRET=${GOTRUE_EXTERNAL_GOOGLE_SECRET}
|
|
- GOTRUE_EXTERNAL_GOOGLE_REDIRECT_URI=${GOTRUE_EXTERNAL_GOOGLE_REDIRECT_URI}
|
|
|
|
- GOTRUE_EXTERNAL_GITHUB_ENABLED=${GOTRUE_EXTERNAL_GITHUB_ENABLED:-false}
|
|
- GOTRUE_EXTERNAL_GITHUB_CLIENT_ID=${GOTRUE_EXTERNAL_GITHUB_CLIENT_ID}
|
|
- GOTRUE_EXTERNAL_GITHUB_SECRET=${GOTRUE_EXTERNAL_GITHUB_SECRET}
|
|
- GOTRUE_EXTERNAL_GITHUB_REDIRECT_URI=${GOTRUE_EXTERNAL_GITHUB_REDIRECT_URI}
|
|
|
|
- GOTRUE_EXTERNAL_DISCORD_ENABLED=${GOTRUE_EXTERNAL_DISCORD_ENABLED:-false}
|
|
- GOTRUE_EXTERNAL_DISCORD_CLIENT_ID=${GOTRUE_EXTERNAL_DISCORD_CLIENT_ID}
|
|
- GOTRUE_EXTERNAL_DISCORD_SECRET=${GOTRUE_EXTERNAL_DISCORD_SECRET}
|
|
- GOTRUE_EXTERNAL_DISCORD_REDIRECT_URI=${GOTRUE_EXTERNAL_DISCORD_REDIRECT_URI}
|
|
|
|
# SAML Configuration
|
|
- GOTRUE_SAML_ENABLED=${GOTRUE_SAML_ENABLED:-false}
|
|
- GOTRUE_SAML_PRIVATE_KEY=${GOTRUE_SAML_PRIVATE_KEY}
|
|
|
|
appflowy_cloud:
|
|
restart: on-failure
|
|
image: appflowyinc/appflowy_cloud:${APPFLOWY_CLOUD_VERSION:-latest}
|
|
depends_on:
|
|
gotrue:
|
|
condition: service_healthy
|
|
environment:
|
|
# Core Configuration
|
|
- RUST_LOG=${RUST_LOG:-info}
|
|
- APPFLOWY_ENVIRONMENT=production
|
|
- APPFLOWY_DATABASE_URL=${APPFLOWY_DATABASE_URL}
|
|
- APPFLOWY_REDIS_URI=${APPFLOWY_REDIS_URI}
|
|
- APPFLOWY_WEB_URL=${APPFLOWY_WEB_URL}
|
|
|
|
# Authentication Configuration
|
|
- APPFLOWY_GOTRUE_JWT_SECRET=${GOTRUE_JWT_SECRET}
|
|
- APPFLOWY_GOTRUE_JWT_EXP=${GOTRUE_JWT_EXP:-7200}
|
|
- APPFLOWY_GOTRUE_BASE_URL=${APPFLOWY_GOTRUE_BASE_URL}
|
|
|
|
# File Storage Configuration
|
|
- APPFLOWY_S3_CREATE_BUCKET=${APPFLOWY_S3_CREATE_BUCKET:-true}
|
|
- APPFLOWY_S3_USE_MINIO=${APPFLOWY_S3_USE_MINIO:-true}
|
|
- APPFLOWY_S3_MINIO_URL=${APPFLOWY_S3_MINIO_URL}
|
|
- APPFLOWY_S3_ACCESS_KEY=${APPFLOWY_S3_ACCESS_KEY}
|
|
- APPFLOWY_S3_SECRET_KEY=${APPFLOWY_S3_SECRET_KEY}
|
|
- APPFLOWY_S3_BUCKET=${APPFLOWY_S3_BUCKET:-appflowy}
|
|
- APPFLOWY_S3_REGION=${APPFLOWY_S3_REGION:-us-east-1}
|
|
- APPFLOWY_S3_PRESIGNED_URL_ENDPOINT=${APPFLOWY_S3_PRESIGNED_URL_ENDPOINT}
|
|
|
|
# Email Configuration
|
|
- APPFLOWY_MAILER_SMTP_HOST=${APPFLOWY_MAILER_SMTP_HOST}
|
|
- APPFLOWY_MAILER_SMTP_PORT=${APPFLOWY_MAILER_SMTP_PORT}
|
|
- APPFLOWY_MAILER_SMTP_USERNAME=${APPFLOWY_MAILER_SMTP_USERNAME}
|
|
- APPFLOWY_MAILER_SMTP_EMAIL=${APPFLOWY_MAILER_SMTP_EMAIL}
|
|
- APPFLOWY_MAILER_SMTP_PASSWORD=${APPFLOWY_MAILER_SMTP_PASSWORD}
|
|
- APPFLOWY_MAILER_SMTP_TLS_KIND=${APPFLOWY_MAILER_SMTP_TLS_KIND:-wrapper}
|
|
|
|
# Access Control and Performance
|
|
- APPFLOWY_ACCESS_CONTROL=${APPFLOWY_ACCESS_CONTROL:-true}
|
|
- APPFLOWY_DATABASE_MAX_CONNECTIONS=${APPFLOWY_DATABASE_MAX_CONNECTIONS:-40}
|
|
- APPFLOWY_WEBSOCKET_MAILBOX_SIZE=${APPFLOWY_WEBSOCKET_MAILBOX_SIZE:-6000}
|
|
|
|
# AI Configuration
|
|
- AI_SERVER_HOST=${AI_SERVER_HOST:-ai}
|
|
- AI_SERVER_PORT=${AI_SERVER_PORT:-5001}
|
|
- AI_OPENAI_API_KEY=${AI_OPENAI_API_KEY}
|
|
|
|
admin_frontend:
|
|
restart: on-failure
|
|
image: appflowyinc/admin_frontend:${APPFLOWY_ADMIN_FRONTEND_VERSION:-latest}
|
|
depends_on:
|
|
gotrue:
|
|
condition: service_healthy
|
|
appflowy_cloud:
|
|
condition: service_started
|
|
environment:
|
|
- RUST_LOG=${RUST_LOG:-info}
|
|
- ADMIN_FRONTEND_REDIS_URL=${ADMIN_FRONTEND_REDIS_URL}
|
|
- ADMIN_FRONTEND_GOTRUE_URL=${ADMIN_FRONTEND_GOTRUE_URL}
|
|
- ADMIN_FRONTEND_APPFLOWY_CLOUD_URL=${ADMIN_FRONTEND_APPFLOWY_CLOUD_URL}
|
|
- ADMIN_FRONTEND_PATH_PREFIX=${ADMIN_FRONTEND_PATH_PREFIX:-/console}
|
|
|
|
ai:
|
|
restart: on-failure
|
|
image: appflowyinc/appflowy_ai:${APPFLOWY_AI_VERSION:-latest}
|
|
depends_on:
|
|
postgres:
|
|
condition: service_healthy
|
|
appflowy_cloud:
|
|
condition: service_started
|
|
healthcheck:
|
|
test: ["CMD", "curl", "-f", "http://localhost:5001/health"]
|
|
interval: 30s
|
|
timeout: 10s
|
|
retries: 3
|
|
start_period: 40s
|
|
environment:
|
|
# Core AI Configuration
|
|
- AI_SERVER_PORT=${AI_SERVER_PORT:-5001}
|
|
- OPENAI_API_KEY=${AI_OPENAI_API_KEY}
|
|
- DEFAULT_AI_MODEL=${DEFAULT_AI_MODEL:-gpt-4o-mini}
|
|
- DEFAULT_AI_COMPLETION_MODEL=${DEFAULT_AI_COMPLETION_MODEL:-gpt-4o-mini}
|
|
|
|
# Azure OpenAI (optional)
|
|
- AZURE_OPENAI_API_KEY=${AZURE_OPENAI_API_KEY}
|
|
- AZURE_OPENAI_ENDPOINT=${AZURE_OPENAI_ENDPOINT}
|
|
- AZURE_OPENAI_API_VERSION=${AZURE_OPENAI_API_VERSION}
|
|
|
|
# Database and Cache
|
|
- AI_DATABASE_URL=${APPFLOWY_DATABASE_URL}
|
|
- AI_REDIS_URL=${APPFLOWY_REDIS_URI}
|
|
|
|
# File Storage for AI
|
|
- APPFLOWY_S3_ACCESS_KEY=${APPFLOWY_S3_ACCESS_KEY}
|
|
- APPFLOWY_S3_SECRET_KEY=${APPFLOWY_S3_SECRET_KEY}
|
|
- APPFLOWY_S3_BUCKET=${APPFLOWY_S3_BUCKET:-appflowy}
|
|
- APPFLOWY_S3_REGION=${APPFLOWY_S3_REGION:-us-east-1}
|
|
- AI_USE_MINIO=${APPFLOWY_S3_USE_MINIO:-true}
|
|
- AI_MINIO_URL=${APPFLOWY_S3_MINIO_URL}
|
|
|
|
# Integration
|
|
- AI_APPFLOWY_HOST=${APPFLOWY_BASE_URL}
|
|
- APPFLOWY_GOTRUE_JWT_SECRET=${GOTRUE_JWT_SECRET}
|
|
|
|
appflowy_worker:
|
|
restart: on-failure
|
|
image: appflowyinc/appflowy_worker:${APPFLOWY_WORKER_VERSION:-latest}
|
|
depends_on:
|
|
postgres:
|
|
condition: service_healthy
|
|
environment:
|
|
# Core Configuration
|
|
- RUST_LOG=${RUST_LOG:-info}
|
|
- APPFLOWY_ENVIRONMENT=production
|
|
- APPFLOWY_WORKER_REDIS_URL=${APPFLOWY_WORKER_REDIS_URL}
|
|
- APPFLOWY_WORKER_ENVIRONMENT=production
|
|
- APPFLOWY_WORKER_DATABASE_URL=${APPFLOWY_WORKER_DATABASE_URL}
|
|
- APPFLOWY_WORKER_DATABASE_NAME=${APPFLOWY_WORKER_DATABASE_NAME}
|
|
- APPFLOWY_WORKER_IMPORT_TICK_INTERVAL=${APPFLOWY_WORKER_IMPORT_TICK_INTERVAL:-30}
|
|
|
|
# File Storage Configuration
|
|
- APPFLOWY_S3_USE_MINIO=${APPFLOWY_S3_USE_MINIO:-true}
|
|
- APPFLOWY_S3_MINIO_URL=${APPFLOWY_S3_MINIO_URL}
|
|
- APPFLOWY_S3_ACCESS_KEY=${APPFLOWY_S3_ACCESS_KEY}
|
|
- APPFLOWY_S3_SECRET_KEY=${APPFLOWY_S3_SECRET_KEY}
|
|
- APPFLOWY_S3_BUCKET=${APPFLOWY_S3_BUCKET:-appflowy}
|
|
- APPFLOWY_S3_REGION=${APPFLOWY_S3_REGION:-us-east-1}
|
|
|
|
# Email Configuration
|
|
- APPFLOWY_MAILER_SMTP_HOST=${APPFLOWY_MAILER_SMTP_HOST}
|
|
- APPFLOWY_MAILER_SMTP_PORT=${APPFLOWY_MAILER_SMTP_PORT}
|
|
- APPFLOWY_MAILER_SMTP_USERNAME=${APPFLOWY_MAILER_SMTP_USERNAME}
|
|
- APPFLOWY_MAILER_SMTP_EMAIL=${APPFLOWY_MAILER_SMTP_EMAIL}
|
|
- APPFLOWY_MAILER_SMTP_PASSWORD=${APPFLOWY_MAILER_SMTP_PASSWORD}
|
|
- APPFLOWY_MAILER_SMTP_TLS_KIND=${APPFLOWY_MAILER_SMTP_TLS_KIND:-wrapper}
|
|
|
|
appflowy_web:
|
|
restart: on-failure
|
|
image: appflowyinc/appflowy_web:${APPFLOWY_WEB_VERSION:-latest}
|
|
depends_on:
|
|
- appflowy_cloud
|
|
environment:
|
|
- AF_BASE_URL=${APPFLOWY_BASE_URL}
|
|
- AF_GOTRUE_URL=${APPFLOWY_BASE_URL}/gotrue
|
|
- AF_WS_V2_URL=${APPFLOWY_WEBSOCKET_BASE_URL}
|
|
|
|
volumes:
|
|
postgres_data:
|
|
minio_data:
|