84 lines
3.2 KiB
YAML
84 lines
3.2 KiB
YAML
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:
|
|
build:
|
|
context: .
|
|
dockerfile: Dockerfile
|
|
container_name: miragenflow
|
|
ports:
|
|
- "3000:3000"
|
|
restart: unless-stopped
|
|
depends_on:
|
|
server:
|
|
condition: service_healthy
|
|
|
|
volumes:
|
|
miragenflow-postgres:
|
|
miragenflow-redis:
|
|
miragenflow-server:
|