109 lines
3.9 KiB
YAML
109 lines
3.9 KiB
YAML
services:
|
|
app:
|
|
image: tiechui251/arboris-app:latest
|
|
container_name: arboris-app
|
|
ports:
|
|
- "${APP_PORT:-80}:80"
|
|
environment:
|
|
SECRET_KEY: ${SECRET_KEY:?请设置SECRET_KEY}
|
|
ENVIRONMENT: ${ENVIRONMENT:-production}
|
|
DEBUG: ${DEBUG:-false}
|
|
LOGGING_LEVEL: ${LOGGING_LEVEL:-INFO}
|
|
|
|
DB_PROVIDER: ${DB_PROVIDER:-sqlite}
|
|
|
|
MYSQL_HOST: ${MYSQL_HOST:-db}
|
|
MYSQL_PORT: ${MYSQL_PORT:-3306}
|
|
MYSQL_USER: ${MYSQL_USER:-arboris}
|
|
MYSQL_PASSWORD: ${MYSQL_PASSWORD:?请设置数据库密码}
|
|
MYSQL_DATABASE: ${MYSQL_DATABASE:-arboris}
|
|
|
|
ADMIN_DEFAULT_USERNAME: ${ADMIN_DEFAULT_USERNAME:-admin}
|
|
ADMIN_DEFAULT_PASSWORD: ${ADMIN_DEFAULT_PASSWORD:-ChangeMe123!}
|
|
ADMIN_DEFAULT_EMAIL: ${ADMIN_DEFAULT_EMAIL:-admin@example.com}
|
|
|
|
OPENAI_API_KEY: ${OPENAI_API_KEY}
|
|
OPENAI_API_BASE_URL: ${OPENAI_API_BASE_URL:-https://api.openai.com/v1}
|
|
OPENAI_MODEL_NAME: ${OPENAI_MODEL_NAME:-gpt-3.5-turbo}
|
|
WRITER_CHAPTER_VERSION_COUNT: ${WRITER_CHAPTER_VERSION_COUNT:-2}
|
|
|
|
EMBEDDING_PROVIDER: ${EMBEDDING_PROVIDER:-openai}
|
|
EMBEDDING_BASE_URL: ${EMBEDDING_BASE_URL:-https://api.openai.com/v1}
|
|
EMBEDDING_API_KEY: ${EMBEDDING_API_KEY:-${OPENAI_API_KEY}}
|
|
EMBEDDING_MODEL: ${EMBEDDING_MODEL:-text-embedding-3-large}
|
|
EMBEDDING_MODEL_VECTOR_SIZE: ${EMBEDDING_MODEL_VECTOR_SIZE:-3072}
|
|
OLLAMA_EMBEDDING_BASE_URL: ${OLLAMA_EMBEDDING_BASE_URL:-http://localhost:11434}
|
|
OLLAMA_EMBEDDING_MODEL: ${OLLAMA_EMBEDDING_MODEL:-nomic-embed-text:latest}
|
|
|
|
VECTOR_DB_URL: ${VECTOR_DB_URL:-file:./storage/rag_vectors.db}
|
|
VECTOR_DB_AUTH_TOKEN: ${VECTOR_DB_AUTH_TOKEN:-}
|
|
VECTOR_TOP_K_CHUNKS: ${VECTOR_TOP_K_CHUNKS:-5}
|
|
VECTOR_TOP_K_SUMMARIES: ${VECTOR_TOP_K_SUMMARIES:-3}
|
|
VECTOR_CHUNK_SIZE: ${VECTOR_CHUNK_SIZE:-480}
|
|
VECTOR_CHUNK_OVERLAP: ${VECTOR_CHUNK_OVERLAP:-120}
|
|
|
|
SMTP_SERVER: ${SMTP_SERVER:-smtp.example.com}
|
|
SMTP_PORT: ${SMTP_PORT:-465}
|
|
SMTP_USERNAME: ${SMTP_USERNAME:-no-reply@example.com}
|
|
SMTP_PASSWORD: ${SMTP_PASSWORD}
|
|
EMAIL_FROM: ${EMAIL_FROM:-Arboris}
|
|
|
|
ALLOW_USER_REGISTRATION: ${ALLOW_USER_REGISTRATION:-true}
|
|
ENABLE_LINUXDO_LOGIN: ${ENABLE_LINUXDO_LOGIN:-false}
|
|
|
|
LINUXDO_CLIENT_ID: ${LINUXDO_CLIENT_ID}
|
|
LINUXDO_CLIENT_SECRET: ${LINUXDO_CLIENT_SECRET}
|
|
LINUXDO_REDIRECT_URI: ${LINUXDO_REDIRECT_URI}
|
|
LINUXDO_AUTH_URL: ${LINUXDO_AUTH_URL:-https://connect.linux.do/oauth2/authorize}
|
|
LINUXDO_TOKEN_URL: ${LINUXDO_TOKEN_URL:-https://connect.linux.do/oauth2/token}
|
|
LINUXDO_USER_INFO_URL: ${LINUXDO_USER_INFO_URL:-https://connect.linux.do/api/user}
|
|
restart: unless-stopped
|
|
volumes:
|
|
- ${SQLITE_STORAGE_SOURCE:-sqlite-data}:/app/storage
|
|
networks:
|
|
- app-network
|
|
healthcheck:
|
|
test: ["CMD", "curl", "-f", "http://127.0.0.1:8000/api/health"]
|
|
interval: 30s
|
|
timeout: 10s
|
|
retries: 3
|
|
start_period: 90s
|
|
|
|
# MySQL 数据库服务(通过 profile mysql 启用)
|
|
db:
|
|
image: mysql:8.0
|
|
container_name: arboris-db
|
|
profiles:
|
|
- mysql
|
|
environment:
|
|
MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD:-ChangeMe_RootPassword123}
|
|
MYSQL_DATABASE: ${MYSQL_DATABASE:-arboris}
|
|
MYSQL_USER: ${MYSQL_USER:-arboris}
|
|
MYSQL_PASSWORD: ${MYSQL_PASSWORD:-ChangeMe_Password123}
|
|
TZ: Asia/Shanghai
|
|
volumes:
|
|
- mysql-data:/var/lib/mysql
|
|
restart: unless-stopped
|
|
networks:
|
|
- app-network
|
|
healthcheck:
|
|
test: ["CMD", "mysqladmin", "ping", "-h", "localhost", "-u", "root", "-p${MYSQL_ROOT_PASSWORD}"]
|
|
interval: 10s
|
|
timeout: 5s
|
|
retries: 5
|
|
start_period: 30s
|
|
command:
|
|
- --character-set-server=utf8mb4
|
|
- --collation-server=utf8mb4_unicode_ci
|
|
- --max_connections=1000
|
|
|
|
volumes:
|
|
mysql-data:
|
|
driver: local
|
|
sqlite-data:
|
|
driver: local
|
|
|
|
networks:
|
|
app-network:
|
|
driver: bridge
|