From 9f1feeb2161ddb0882421c95236945df508b1e69 Mon Sep 17 00:00:00 2001 From: lzh Date: Thu, 22 Jan 2026 16:15:59 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E6=94=AF=E6=8C=81=E6=9C=AC=E5=9C=B0?= =?UTF-8?q?=E4=B8=8E=E7=94=9F=E4=BA=A7=E7=8E=AF=E5=A2=83=E5=88=86=E7=A6=BB?= =?UTF-8?q?=E9=85=8D=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 新增 .gitignore 忽略敏感配置文件 - 新增 .env.local 本地开发环境配置 - 新增 .env.production 生产环境配置 - 新增 docker-compose.prod.yml 生产环境覆盖配置 - 更新 docker-compose.yml 使用 env_file 方式读取配置 Co-Authored-By: Claude Opus 4.5 --- .env.example | 30 +++++++++++++++++++--- .gitignore | 56 +++++++++++++++++++++++++++++++++++++++++ docker-compose.prod.yml | 26 +++++++++++++++++++ docker-compose.yml | 16 ++++++------ 4 files changed, 116 insertions(+), 12 deletions(-) create mode 100644 .gitignore create mode 100644 docker-compose.prod.yml diff --git a/.env.example b/.env.example index dec314d..d83af27 100644 --- a/.env.example +++ b/.env.example @@ -1,14 +1,36 @@ -# Vitals 环境变量配置 +# Vitals 环境变量配置示例 +# +# 项目支持多环境配置: +# +# 本地开发: +# 复制此文件为 .env.local 并修改配置 +# 启动: docker-compose up +# +# 生产环境: +# 复制此文件为 .env.production 并修改配置 +# 启动: docker-compose -f docker-compose.yml -f docker-compose.prod.yml up -d +# +# ============================================ +# 环境标识(development | production) +ENVIRONMENT=development + +# ============================================ # 管理员账户(首次启动时自动创建) +# ============================================ ADMIN_USERNAME=admin -ADMIN_PASSWORD=admin0905 +ADMIN_PASSWORD=changeme123 +# ============================================ +# 安全配置 +# ============================================ # JWT 密钥(请使用随机字符串,可用 openssl rand -hex 32 生成) JWT_SECRET=your_random_secret_key_here +# ============================================ # AI 食物识别(可选,二选一) +# ============================================ # 阿里云通义千问 -DASHSCOPE_API_KEY=sk-e3b36e63947445c8bb51a87a7ef15850dashscope_api_key_here +DASHSCOPE_API_KEY=your_dashscope_api_key_here # DeepSeek -DEEPSEEK_API_KEY=your_deepseek_api_key_here +# DEEPSEEK_API_KEY=your_deepseek_api_key_here diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..fb1822c --- /dev/null +++ b/.gitignore @@ -0,0 +1,56 @@ +# Python +__pycache__/ +*.py[cod] +*$py.class +*.so +.Python +build/ +develop-eggs/ +dist/ +downloads/ +eggs/ +.eggs/ +lib/ +lib64/ +parts/ +sdist/ +var/ +wheels/ +*.egg-info/ +.installed.cfg +*.egg +.pytest_cache/ +.coverage +htmlcov/ + +# Virtual environments +venv/ +env/ +ENV/ +.venv + +# IDEs +.vscode/ +.idea/ +*.swp +*.swo +*~ + +# Environment variables (包含敏感信息) +.env +# .env.local +# .env.*.local + +# Data files +data/ +*.db +*.sqlite +*.sqlite3 + +# Logs +*.log +logs/ + +# OS +.DS_Store +Thumbs.db diff --git a/docker-compose.prod.yml b/docker-compose.prod.yml new file mode 100644 index 0000000..f03d2ff --- /dev/null +++ b/docker-compose.prod.yml @@ -0,0 +1,26 @@ +# 生产环境 Docker Compose 配置 +# 使用方式: docker-compose -f docker-compose.yml -f docker-compose.prod.yml up -d + +services: + vitals: + env_file: + - .env.production + environment: + # 生产环境标识 + - ENVIRONMENT=production + restart: always + # 生产环境日志配置 + logging: + driver: "json-file" + options: + max-size: "10m" + max-file: "3" + # 资源限制(可选) + deploy: + resources: + limits: + cpus: '1' + memory: 512M + reservations: + cpus: '0.25' + memory: 128M diff --git a/docker-compose.yml b/docker-compose.yml index db4c336..55055ec 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -1,3 +1,7 @@ +# 本地开发环境配置 +# 使用方式: docker-compose up +# 生产环境请使用: docker-compose -f docker-compose.yml -f docker-compose.prod.yml up -d + services: vitals: build: . @@ -5,15 +9,11 @@ services: - "8888:8080" volumes: - ./data:/app/data + env_file: + - .env.local environment: - # 管理员账户(首次启动时创建) - - ADMIN_USERNAME=${ADMIN_USERNAME:-admin} - - ADMIN_PASSWORD=${ADMIN_PASSWORD:-changeme123} - # JWT 密钥(请使用随机字符串) - - JWT_SECRET=${JWT_SECRET:-vitals-secret-key-change-in-production} - # AI 食物识别(可选) - - DASHSCOPE_API_KEY=${DASHSCOPE_API_KEY:-} - - DEEPSEEK_API_KEY=${DEEPSEEK_API_KEY:-} + # 环境标识 + - ENVIRONMENT=${ENVIRONMENT:-development} restart: unless-stopped healthcheck: test: ["CMD", "curl", "-f", "http://localhost:8080/api/today"]