feat: integrate platform backend and application interfaces

This commit is contained in:
Qiufeng
2026-09-02 21:09:47 +08:00
parent cd9ac1af70
commit b16390dd41
648 changed files with 102488 additions and 17737 deletions
+77 -5
View File
@@ -1,11 +1,83 @@
services:
postgres:
image: postgres:16-alpine
environment:
POSTGRES_DB: miragenflow
POSTGRES_USER: miragenflow
POSTGRES_PASSWORD: ${POSTGRES_PASSWORD:?POSTGRES_PASSWORD must be set}
volumes:
- miragenflow-postgres:/var/lib/postgresql/data
healthcheck:
test: ["CMD-SHELL", "pg_isready -U miragenflow -d miragenflow"]
interval: 5s
timeout: 3s
retries: 10
redis:
image: redis:7-alpine
command: ["redis-server", "--appendonly", "yes"]
volumes:
- miragenflow-redis:/data
healthcheck:
test: ["CMD", "redis-cli", "ping"]
interval: 5s
timeout: 3s
retries: 10
server:
build:
context: .
dockerfile: server/Dockerfile
environment:
NODE_ENV: production
MIRAGENFLOW_HOST: 0.0.0.0
MIRAGENFLOW_PORT: 3100
# The bundled nginx listener is HTTP. Set this to true only when the
# public reverse proxy terminates TLS before forwarding to the app.
MIRAGENFLOW_COOKIE_SECURE: ${MIRAGENFLOW_COOKIE_SECURE:-false}
MIRAGENFLOW_ACCESS_TOKEN_SECRET: ${MIRAGENFLOW_ACCESS_TOKEN_SECRET:?MIRAGENFLOW_ACCESS_TOKEN_SECRET must be set}
MIRAGENFLOW_ADMIN_EMAIL: ${MIRAGENFLOW_ADMIN_EMAIL:?MIRAGENFLOW_ADMIN_EMAIL must be set}
MIRAGENFLOW_ADMIN_PASSWORD: ${MIRAGENFLOW_ADMIN_PASSWORD:?MIRAGENFLOW_ADMIN_PASSWORD must be set}
MIRAGENFLOW_ADMIN_MFA_SECRET: ${MIRAGENFLOW_ADMIN_MFA_SECRET:?MIRAGENFLOW_ADMIN_MFA_SECRET must be set}
MIRAGENFLOW_ADMIN_MFA_REQUIRED: ${MIRAGENFLOW_ADMIN_MFA_REQUIRED:-false}
MIRAGENFLOW_ADMIN_CAPTCHA_REQUIRED: ${MIRAGENFLOW_ADMIN_CAPTCHA_REQUIRED:-false}
MIRAGENFLOW_USER_MFA_REQUIRED: ${MIRAGENFLOW_USER_MFA_REQUIRED:-false}
MIRAGENFLOW_USER_VERIFICATION_REQUIRED: ${MIRAGENFLOW_USER_VERIFICATION_REQUIRED:-false}
MIRAGENFLOW_EMAIL_REGISTRATION_VERIFICATION_REQUIRED: ${MIRAGENFLOW_EMAIL_REGISTRATION_VERIFICATION_REQUIRED:-false}
MIRAGENFLOW_PHONE_REGISTRATION_VERIFICATION_REQUIRED: ${MIRAGENFLOW_PHONE_REGISTRATION_VERIFICATION_REQUIRED:-false}
MIRAGENFLOW_CAPTCHA_REQUIRED: ${MIRAGENFLOW_CAPTCHA_REQUIRED:-false}
MIRAGENFLOW_CHANNEL_ENCRYPTION_KEY: ${MIRAGENFLOW_CHANNEL_ENCRYPTION_KEY:?MIRAGENFLOW_CHANNEL_ENCRYPTION_KEY must be set}
DATABASE_URL: postgres://miragenflow:${POSTGRES_PASSWORD:?POSTGRES_PASSWORD must be set}@postgres:5432/miragenflow
REDIS_URL: redis://redis:6379
MIRAGENFLOW_PERSISTENCE_ADAPTER: postgres
MIRAGENFLOW_QUEUE_ADAPTER: redis
MIRAGENFLOW_STAGING_TTL_SECONDS: 604800
MIRAGENFLOW_STAGING_DIR: /var/lib/miragenflow/staging
expose:
- "3100"
volumes:
- miragenflow-server:/var/lib/miragenflow
depends_on:
postgres:
condition: service_healthy
redis:
condition: service_healthy
healthcheck:
test: ["CMD", "wget", "-qO-", "http://127.0.0.1:3100/api/ready"]
interval: 10s
timeout: 3s
retries: 5
app:
image: ghcr.io/basketikun/infinite-canvas:latest
build:
context: .
dockerfile: Dockerfile
container_name: miragenflow
ports:
- "3000:3000"
restart: unless-stopped
# 统计分析(可选,默认关闭)。每家一个独立变量,填了谁就启用谁,可同时启用多家:
# environment:
# ANALYTICS_GA4_ID: G-XXXXXXXXXX # Google Analytics 4 衡量 ID
# ANALYTICS_BAIDU_ID: xxxxxxxxxxxxxxxxxxxxxxxxxxxx # 百度统计站点 ID
depends_on:
server:
condition: service_healthy
volumes:
miragenflow-postgres:
miragenflow-redis:
miragenflow-server: