Files
daily-news-app/docker-compose.yml
donald db0f0bbfe7 Initial commit: Daily News App
企業內部新聞彙整與分析系統
- 自動新聞抓取 (Digitimes, 經濟日報, 工商時報)
- AI 智慧摘要 (OpenAI/Claude/Ollama)
- 群組管理與訂閱通知
- 已清理 Python 快取檔案

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-12-03 23:53:24 +08:00

109 lines
2.7 KiB
YAML

# 每日報導 APP - Docker Compose
# 適用於 1Panel 部署
version: '3.8'
services:
# FastAPI 應用
app:
build: .
container_name: daily-news-app
restart: unless-stopped
ports:
- "8000:8000"
environment:
- APP_ENV=production
- DEBUG=false
- DB_HOST=mysql
- DB_PORT=3306
- DB_NAME=${DB_NAME:-daily_news_app}
- DB_USER=${DB_USER:-root}
- DB_PASSWORD=${DB_PASSWORD}
- SECRET_KEY=${SECRET_KEY}
- JWT_SECRET_KEY=${JWT_SECRET_KEY}
- LDAP_SERVER=${LDAP_SERVER}
- LDAP_BASE_DN=${LDAP_BASE_DN}
- LLM_PROVIDER=${LLM_PROVIDER:-gemini}
- GEMINI_API_KEY=${GEMINI_API_KEY}
- GEMINI_MODEL=${GEMINI_MODEL:-gemini-1.5-pro}
- OPENAI_API_KEY=${OPENAI_API_KEY}
- OPENAI_MODEL=${OPENAI_MODEL:-gpt-4o}
- OLLAMA_ENDPOINT=${OLLAMA_ENDPOINT:-http://ollama:11434}
- OLLAMA_MODEL=${OLLAMA_MODEL:-llama3}
- SMTP_HOST=${SMTP_HOST}
- SMTP_PORT=${SMTP_PORT:-587}
- SMTP_USERNAME=${SMTP_USERNAME}
- SMTP_PASSWORD=${SMTP_PASSWORD}
- SMTP_FROM_EMAIL=${SMTP_FROM_EMAIL}
- DIGITIMES_USERNAME=${DIGITIMES_USERNAME}
- DIGITIMES_PASSWORD=${DIGITIMES_PASSWORD}
volumes:
- ./uploads:/app/uploads
- ./logs:/app/logs
depends_on:
mysql:
condition: service_healthy
networks:
- daily-news-network
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:8000/health"]
interval: 30s
timeout: 10s
retries: 3
# MySQL 資料庫
mysql:
image: mysql:8.0
container_name: daily-news-mysql
restart: unless-stopped
environment:
- MYSQL_ROOT_PASSWORD=${DB_PASSWORD}
- MYSQL_DATABASE=${DB_NAME:-daily_news_app}
- MYSQL_CHARSET=utf8mb4
- MYSQL_COLLATION=utf8mb4_unicode_ci
volumes:
- mysql_data:/var/lib/mysql
- ./scripts/init.sql:/docker-entrypoint-initdb.d/init.sql:ro
ports:
- "3306:3306"
networks:
- daily-news-network
healthcheck:
test: ["CMD", "mysqladmin", "ping", "-h", "localhost"]
interval: 10s
timeout: 5s
retries: 5
command:
- --character-set-server=utf8mb4
- --collation-server=utf8mb4_unicode_ci
- --event-scheduler=ON
# Ollama (可選,地端 LLM)
ollama:
image: ollama/ollama:latest
container_name: daily-news-ollama
restart: unless-stopped
volumes:
- ollama_data:/root/.ollama
ports:
- "11434:11434"
networks:
- daily-news-network
profiles:
- ollama
deploy:
resources:
reservations:
devices:
- driver: nvidia
count: all
capabilities: [gpu]
networks:
daily-news-network:
driver: bridge
volumes:
mysql_data:
ollama_data: