update
This commit is contained in:
parent
7bd63eefc5
commit
ab39576a45
60
.dockerignore
Normal file
60
.dockerignore
Normal file
@ -0,0 +1,60 @@
|
||||
# Git
|
||||
.git
|
||||
.gitignore
|
||||
|
||||
# 环境文件(避免泄露敏感信息)
|
||||
.env
|
||||
.env.example
|
||||
|
||||
# Python
|
||||
__pycache__/
|
||||
*.py[cod]
|
||||
*$py.class
|
||||
*.so
|
||||
.Python
|
||||
env/
|
||||
build/
|
||||
develop-eggs/
|
||||
dist/
|
||||
downloads/
|
||||
eggs/
|
||||
.eggs/
|
||||
lib/
|
||||
lib64/
|
||||
parts/
|
||||
sdist/
|
||||
var/
|
||||
wheels/
|
||||
*.egg-info/
|
||||
.installed.cfg
|
||||
*.egg
|
||||
|
||||
# 虚拟环境
|
||||
venv/
|
||||
ENV/
|
||||
env/
|
||||
|
||||
# IDE相关
|
||||
.idea/
|
||||
.vscode/
|
||||
*.swp
|
||||
*.swo
|
||||
.DS_Store
|
||||
|
||||
# Docker相关
|
||||
Dockerfile
|
||||
docker-compose.yml
|
||||
.dockerignore
|
||||
|
||||
# 日志文件
|
||||
logs/
|
||||
*.log
|
||||
|
||||
# 数据文件
|
||||
data/
|
||||
*.sqlite3
|
||||
|
||||
# 其他
|
||||
README.md
|
||||
LICENSE
|
||||
*.md
|
||||
21
.env
Normal file
21
.env
Normal file
@ -0,0 +1,21 @@
|
||||
# DashScope API密钥
|
||||
DASHSCOPE_API_KEY=sk-caa199589f1c451aaac471fad2986e28
|
||||
|
||||
# 服务器配置
|
||||
HOST=127.0.0.1
|
||||
PORT=9001
|
||||
DEBUG=True
|
||||
|
||||
# 腾讯云配置
|
||||
QCLOUD_SECRET_ID=AKIDxnbGj281iHtKallqqzvlV5YxBCrPltnS
|
||||
QCLOUD_SECRET_KEY=ta6PXTMBsX7dzA7IN6uYUFn8F9uTovoU
|
||||
QCLOUD_COS_REGION=ap-chengdu
|
||||
QCLOUD_COS_BUCKET=aidress-1311994147
|
||||
QCLOUD_COS_DOMAIN=https://aidress-1311994147.cos.ap-chengdu.myqcloud.com
|
||||
|
||||
# 数据库配置
|
||||
DB_HOST=gz-cynosdbmysql-grp-2j1cnopr.sql.tencentcdb.com
|
||||
DB_PORT=27469
|
||||
DB_USER=root
|
||||
DB_PASSWORD=Aa#223388
|
||||
DB_NAME=aidress
|
||||
19
.env.docker
Normal file
19
.env.docker
Normal file
@ -0,0 +1,19 @@
|
||||
# 数据库配置
|
||||
DB_HOST=db
|
||||
DB_PORT=3306
|
||||
DB_USER=ai_user
|
||||
DB_PASSWORD=yourpassword
|
||||
DB_NAME=ai_dressing
|
||||
|
||||
# 阿里云百炼平台配置
|
||||
DASHSCOPE_API_KEY=your_dashscope_api_key
|
||||
|
||||
# 腾讯云配置
|
||||
QCLOUD_SECRET_ID=your_qcloud_secret_id
|
||||
QCLOUD_SECRET_KEY=your_qcloud_secret_key
|
||||
|
||||
# 应用配置
|
||||
APP_NAME=AI-Dressing
|
||||
APP_DESCRIPTION=基于阿里百炼平台的AI试衣服务
|
||||
APP_VERSION=0.1.0
|
||||
DEBUG=False
|
||||
2
.gitignore
vendored
2
.gitignore
vendored
@ -1,5 +1,5 @@
|
||||
# 环境变量
|
||||
.env
|
||||
# .env
|
||||
|
||||
# Python
|
||||
__pycache__/
|
||||
|
||||
35
Dockerfile
Normal file
35
Dockerfile
Normal file
@ -0,0 +1,35 @@
|
||||
FROM python:3.9-slim
|
||||
|
||||
# 设置工作目录
|
||||
WORKDIR /app
|
||||
|
||||
# 设置环境变量
|
||||
ENV PYTHONDONTWRITEBYTECODE=1 \
|
||||
PYTHONUNBUFFERED=1
|
||||
|
||||
# 安装系统依赖
|
||||
RUN apt-get update && apt-get install -y --no-install-recommends \
|
||||
build-essential \
|
||||
libssl-dev \
|
||||
libffi-dev \
|
||||
default-libmysqlclient-dev \
|
||||
pkg-config \
|
||||
&& apt-get clean \
|
||||
&& rm -rf /var/lib/apt/lists/*
|
||||
|
||||
# 复制项目文件
|
||||
COPY . /app/
|
||||
|
||||
# 安装Python依赖
|
||||
RUN pip install --no-cache-dir -r requirements.txt
|
||||
|
||||
# 创建非root用户运行应用
|
||||
RUN adduser --disabled-password --gecos '' appuser
|
||||
RUN chown -R appuser:appuser /app
|
||||
USER appuser
|
||||
|
||||
# 暴露端口
|
||||
EXPOSE 9001
|
||||
|
||||
# 启动命令
|
||||
CMD ["uvicorn", "run:app", "--host", "0.0.0.0", "--port", "9001"]
|
||||
70
README.md
70
README.md
@ -86,6 +86,76 @@ python run.py
|
||||
|
||||
服务将在 http://localhost:9001 启动,您可以访问 http://localhost:9001/docs 查看 API 文档。
|
||||
|
||||
## Docker 部署
|
||||
|
||||
本项目支持使用 Docker 进行部署,提供了完整的 Docker 配置文件。
|
||||
|
||||
### 前提条件
|
||||
|
||||
- 安装 [Docker](https://docs.docker.com/get-docker/)
|
||||
- 安装 [Docker Compose](https://docs.docker.com/compose/install/)
|
||||
|
||||
### 使用 Docker 部署
|
||||
|
||||
1. **配置环境变量**
|
||||
|
||||
复制 `.env.docker` 文件为 `.env`,并填写您的 API 密钥:
|
||||
|
||||
```bash
|
||||
cp .env.docker .env
|
||||
```
|
||||
|
||||
编辑 `.env` 文件,填入您的 API 密钥和其他配置。
|
||||
|
||||
2. **构建并启动服务**
|
||||
|
||||
```bash
|
||||
docker-compose up -d
|
||||
```
|
||||
|
||||
这将启动两个容器:
|
||||
- `ai-dressing-app`:运行 FastAPI 应用程序
|
||||
- `ai-dressing-db`:运行 MySQL 数据库
|
||||
|
||||
3. **初始化数据库**
|
||||
|
||||
应用启动后,执行迁移以创建数据库表:
|
||||
|
||||
```bash
|
||||
docker-compose exec app python3 create_migration.py upgrade
|
||||
```
|
||||
|
||||
4. **访问服务**
|
||||
|
||||
服务将在 `http://localhost:9001` 启动,您可以访问 `http://localhost:9001/docs` 查看 API 文档。
|
||||
|
||||
### Docker 环境管理
|
||||
|
||||
- **查看日志**
|
||||
|
||||
```bash
|
||||
docker-compose logs -f app # 查看应用日志
|
||||
docker-compose logs -f db # 查看数据库日志
|
||||
```
|
||||
|
||||
- **重启服务**
|
||||
|
||||
```bash
|
||||
docker-compose restart app
|
||||
```
|
||||
|
||||
- **停止服务**
|
||||
|
||||
```bash
|
||||
docker-compose down # 停止所有服务
|
||||
```
|
||||
|
||||
- **停止并删除数据卷**
|
||||
|
||||
```bash
|
||||
docker-compose down -v # 谨慎使用,这将删除数据库中的所有数据
|
||||
```
|
||||
|
||||
## API 文档
|
||||
|
||||
启动服务后,访问以下地址查看自动生成的 API 文档:
|
||||
|
||||
49
docker-compose.yml
Normal file
49
docker-compose.yml
Normal file
@ -0,0 +1,49 @@
|
||||
version: '3.8'
|
||||
|
||||
services:
|
||||
app:
|
||||
build: .
|
||||
container_name: ai-dressing-app
|
||||
restart: always
|
||||
ports:
|
||||
- "9001:9001"
|
||||
environment:
|
||||
- DB_HOST=db
|
||||
- DB_PORT=3306
|
||||
- DB_USER=ai_user
|
||||
- DB_PASSWORD=yourpassword
|
||||
- DB_NAME=ai_dressing
|
||||
- DASHSCOPE_API_KEY=${DASHSCOPE_API_KEY}
|
||||
- QCLOUD_SECRET_ID=${QCLOUD_SECRET_ID}
|
||||
- QCLOUD_SECRET_KEY=${QCLOUD_SECRET_KEY}
|
||||
depends_on:
|
||||
- db
|
||||
volumes:
|
||||
- ./:/app
|
||||
networks:
|
||||
- ai-dressing-network
|
||||
|
||||
db:
|
||||
image: mysql:8.0
|
||||
container_name: ai-dressing-db
|
||||
restart: always
|
||||
ports:
|
||||
- "3306:3306"
|
||||
environment:
|
||||
- MYSQL_ROOT_PASSWORD=rootpassword
|
||||
- MYSQL_USER=ai_user
|
||||
- MYSQL_PASSWORD=yourpassword
|
||||
- MYSQL_DATABASE=ai_dressing
|
||||
volumes:
|
||||
- mysql-data:/var/lib/mysql
|
||||
- ./mysql-init:/docker-entrypoint-initdb.d
|
||||
command: --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci
|
||||
networks:
|
||||
- ai-dressing-network
|
||||
|
||||
volumes:
|
||||
mysql-data:
|
||||
|
||||
networks:
|
||||
ai-dressing-network:
|
||||
driver: bridge
|
||||
14
mysql-init/01-init.sql
Normal file
14
mysql-init/01-init.sql
Normal file
@ -0,0 +1,14 @@
|
||||
-- 创建数据库
|
||||
CREATE DATABASE IF NOT EXISTS ai_dressing CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
|
||||
|
||||
-- 创建用户并授权
|
||||
CREATE USER IF NOT EXISTS 'ai_user'@'%' IDENTIFIED BY 'yourpassword';
|
||||
GRANT ALL PRIVILEGES ON ai_dressing.* TO 'ai_user'@'%';
|
||||
FLUSH PRIVILEGES;
|
||||
|
||||
-- 选择数据库
|
||||
USE ai_dressing;
|
||||
|
||||
-- 初始化顺序保证表不会因外键约束而创建失败
|
||||
-- 注意:这里不需要创建表,因为应用会使用Alembic自动创建
|
||||
-- 这个文件主要用于确保数据库和用户设置正确
|
||||
Loading…
Reference in New Issue
Block a user