studynote/docker-compose.yml
MikiVL 5e01c8df4a feat: 个人主页 + 部署配置(www.mikivl.online)
- vite.config.ts: 加 base: '/app/',App 部署在子路径
- server/index.ts: MODELS_FILE 支持环境变量覆盖(容器化写权限)
- homepage/index.html: 极简开发者风格个人主页(About/Projects/Skills/Contact)
- nginx/default.conf: 反向代理,SSE proxy_buffering off,SPA fallback
- docker-compose.yml: Nginx + Hono 容器编排,models_data volume 持久化
- deploy.sh: 一键本地构建 + rsync 上传 + 远端重启

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-03 01:27:39 +08:00

39 lines
951 B
YAML

services:
hono-server:
image: node:22-alpine
working_dir: /app
command: npx tsx server/index.ts
environment:
- ANTHROPIC_API_KEY=${ANTHROPIC_API_KEY}
- MODELS_FILE=/app/models_data/models.json
- NODE_ENV=production
volumes:
- ./program1:/app:ro
- models_data:/app/models_data
expose:
- "3001"
restart: unless-stopped
healthcheck:
test: ["CMD", "wget", "-qO-", "http://localhost:3001/api/models"]
interval: 30s
timeout: 5s
retries: 3
nginx:
image: nginx:1.27-alpine
ports:
- "80:80"
- "443:443"
volumes:
- ./nginx/default.conf:/etc/nginx/conf.d/default.conf:ro
- ./homepage:/usr/share/nginx/html/homepage:ro
- ./app:/usr/share/nginx/html/app:ro
- /etc/letsencrypt:/etc/letsencrypt:ro
depends_on:
hono-server:
condition: service_healthy
restart: unless-stopped
volumes:
models_data: