Files
chat/compose.yaml
2026-08-05 15:56:08 +08:00

75 lines
2.0 KiB
YAML

name: ai-chat
services:
db:
image: mysql:8.4
restart: unless-stopped
environment:
MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD:-root}
MYSQL_DATABASE: ai_chat
MYSQL_USER: ${DB_USER:-ai_chat}
MYSQL_PASSWORD: ${DB_PASSWORD:-chat_password}
TZ: Asia/Shanghai
volumes:
- mysql-data:/var/lib/mysql
- ./backend/database/schema.sql:/docker-entrypoint-initdb.d/01-schema.sql:ro
healthcheck:
test: ["CMD-SHELL", "mysqladmin ping -h 127.0.0.1 -uroot -p$$MYSQL_ROOT_PASSWORD --silent"]
interval: 5s
timeout: 5s
retries: 30
start_period: 20s
app:
build:
context: .
target: app
restart: unless-stopped
environment:
APP_DEBUG: ${APP_DEBUG:-false}
APP_PUBLIC_URL: ${APP_PUBLIC_URL:-http://localhost:8081}
DEFAULT_LANG: zh-cn
DB_TYPE: mysql
DB_HOST: db
DB_NAME: ai_chat
DB_USER: ${DB_USER:-ai_chat}
DB_PASS: ${DB_PASSWORD:-chat_password}
DB_PORT: 3306
DB_CHARSET: utf8mb4
JWT_SECRET: ${JWT_SECRET:-docker-development-secret-change-me}
JWT_EXPIRE: ${JWT_EXPIRE:-604800}
COSYVOICE_ENABLED: ${COSYVOICE_ENABLED:-false}
COSYVOICE_BASE_URL: ${COSYVOICE_BASE_URL:-http://host.docker.internal:50000}
SHORT_DRAMA_TTS_BASE_URL: ${SHORT_DRAMA_TTS_BASE_URL:-http://192.168.110.111:50000}
extra_hosts:
- "host.docker.internal:host-gateway"
volumes:
- uploads-data:/var/www/backend/uploads
- runtime-data:/var/www/backend/runtime
- storage-data:/var/www/backend/storage
depends_on:
db:
condition: service_healthy
healthcheck:
test: ["CMD", "php", "-r", "$$socket=@fsockopen('127.0.0.1',9000); exit($$socket?0:1);"]
interval: 10s
timeout: 3s
retries: 10
web:
build:
context: .
target: web
restart: unless-stopped
ports:
- "${APP_PORT:-8081}:80"
depends_on:
app:
condition: service_healthy
volumes:
mysql-data:
uploads-data:
runtime-data:
storage-data: