feat:docker配置

This commit is contained in:
jonty
2025-03-27 15:20:27 +08:00
parent 0b61d96f2b
commit 798e9ce46c
6 changed files with 287 additions and 2 deletions

48
.dockerignore Normal file
View File

@@ -0,0 +1,48 @@
# Git相关
.git
.gitignore
# 数据库文件将通过volume挂载
accounts.db
# 日志文件将通过volume挂载
*.log
# 环境变量文件将通过volume挂载
.env
# Python缓存文件
__pycache__/
*.py[cod]
*$py.class
*.so
.Python
env/
build/
develop-eggs/
dist/
downloads/
eggs/
.eggs/
lib/
lib64/
parts/
sdist/
var/
*.egg-info/
.installed.cfg
*.egg
# 虚拟环境
venv/
ENV/
# IDE文件
.idea/
.vscode/
*.swp
*.swo
# 其他
.DS_Store
Thumbs.db

View File

@@ -19,7 +19,7 @@ EMAIL_PIN=
MAX_ACCOUNTS=10
# 数据库URL
DATABASE_URL="sqlite+aiosqlite:///./accounts.db"
DATABASE_URL="sqlite+aiosqlite:///./data/accounts.db"
# ===== API服务配置 =====
# API服务监听主机地址0.0.0.0 允许非本机访问

118
DOCKER_DEPLOY.md Normal file
View File

@@ -0,0 +1,118 @@
# Docker 部署指南
本文档提供如何使用 Docker 和 Docker Compose 部署 Cursor Auto Register 项目的指南。
## 前提条件
- [Docker](https://docs.docker.com/get-docker/) 已安装
- [Docker Compose](https://docs.docker.com/compose/install/) 已安装
## 部署步骤
### 1. 准备环境变量配置
在项目根目录下创建 `.env` 文件(可以基于 `.env.example` 修改):
```bash
cp .env.example .env
```
然后根据需要编辑 `.env` 文件,配置必要的参数:
- `EMAIL_DOMAINS`: 你的邮箱域名
- `EMAIL_USERNAME`: 临时邮箱用户名
- 其他必要的配置
注意:
- 确保 `BROWSER_HEADLESS=True`这在Docker环境中是必须的
- `DATABASE_URL` 应保持为 `sqlite+aiosqlite:///./data/accounts.db`
### 2. 创建必要的目录
确保在项目根目录下创建必要的数据目录:
```bash
mkdir -p data
chmod 777 data
```
### 3. 构建和启动容器
在项目根目录执行以下命令启动服务:
```bash
docker-compose up -d
```
这将在后台构建并启动容器。首次构建可能需要几分钟时间。
### 4. 查看日志
要查看应用日志,执行:
```bash
docker-compose logs -f
```
或者直接查看挂载的日志文件:
```bash
tail -f api.log
```
### 5. 验证部署
服务启动后可以访问以下URL
- 用户界面: http://localhost:8000/
- API文档: http://localhost:8000/docs
- 健康检查: http://localhost:8000/health
### 6. 停止服务
要停止服务,执行:
```bash
docker-compose down
```
## 数据持久化
- 数据目录 `data` 已通过卷挂载,会保存在宿主机上
- 数据库文件 `data/accounts.db` 会保存在数据目录中
- 日志文件 `api.log` 已通过卷挂载,会保存在宿主机上
- 环境配置 `.env` 已通过卷挂载,可以直接在宿主机上修改
## 常见问题排查
### 服务无法启动
检查日志:
```bash
docker-compose logs
```
如果出现与数据库相关的错误,请确保:
1. 已创建 `data` 目录
2. 目录具有适当的权限chmod 777 data
3. 环境变量 DATABASE_URL 指向正确的路径
### 浏览器相关问题
确保Dockerfile中安装了所有必要的浏览器依赖可能需要根据不同的系统环境调整依赖项。
### 网络问题
如果需要使用代理,请在 `.env` 文件中配置 `BROWSER_PROXY`
## 更新部署
如果代码有更新,执行以下命令重新构建并部署:
```bash
docker-compose down
docker-compose build --no-cache
docker-compose up -d
```

64
Dockerfile Normal file
View File

@@ -0,0 +1,64 @@
FROM python:3.11-slim
WORKDIR /app
# 安装系统依赖包括Chrome浏览器和其他必要的包
RUN apt-get update && apt-get install -y \
wget \
gnupg \
ca-certificates \
fonts-liberation \
libasound2 \
libatk-bridge2.0-0 \
libatk1.0-0 \
libatspi2.0-0 \
libcups2 \
libdbus-1-3 \
libdrm2 \
libgbm1 \
libgtk-3-0 \
libnspr4 \
libnss3 \
libxcomposite1 \
libxdamage1 \
libxfixes3 \
libxkbcommon0 \
libxrandr2 \
xvfb \
procps \
locales \
curl \
&& rm -rf /var/lib/apt/lists/*
# 安装Playwright的浏览器
ENV PLAYWRIGHT_BROWSERS_PATH=/ms-playwright
# 复制项目文件
COPY . .
# 创建数据目录并设置权限
RUN mkdir -p /app/data && \
touch /app/data/accounts.db && \
touch /app/api.log && \
chmod 777 /app/data && \
chmod 666 /app/data/accounts.db && \
chmod 666 /app/api.log
# 安装Python依赖
RUN pip install --no-cache-dir -r requirements.txt && \
python -m playwright install chromium
# 设置环境变量
ENV PYTHONUNBUFFERED=1
ENV BROWSER_HEADLESS=True
ENV DATABASE_URL="sqlite+aiosqlite:///./data/accounts.db"
ENV BROWSER_PATH="/ms-playwright/chromium-1097/chrome-linux/chrome"
# 设置Chrome浏览器启动参数
ENV DRISSION_NO_SANDBOX=True
ENV DRISSION_HEADLESS=True
ENV DRISSION_DISABLE_GPU=True
ENV DRISSION_DISABLE_DEV_SHM_USAGE=True
# 设置默认命令
CMD ["uvicorn", "api:app", "--host", "0.0.0.0", "--port", "8000"]

View File

@@ -11,8 +11,13 @@
## 环境要求
- Python 3.8+
- pip (Python包管理器)
- Docker & Docker Compose (可选,用于容器化部署)
## 本地开发设置步骤
## 部署方式
本项目支持两种部署方式传统Python部署和Docker容器化部署。
### 方式一传统Python部署
1. 安装 Python 依赖
```bash
@@ -22,6 +27,31 @@ pip install -r requirements.txt
2. 配置环境变量
- 按照 `config.py` 配置 `.env` 环境参数
3. 启动服务
```bash
uvicorn api:app --host 0.0.0.0 --port 8000
```
### 方式二Docker容器化部署
1. 准备环境变量配置
```bash
cp .env.example .env
```
然后编辑.env文件设置必要的配置参数
2. 构建和启动容器
```bash
docker-compose up -d
```
3. 查看服务状态
```bash
docker-compose ps
```
详细的Docker部署说明请参考 [DOCKER_DEPLOY.md](./DOCKER_DEPLOY.md)
## 使用说明
### 1. 环境变量配置:

25
docker-compose.yml Normal file
View File

@@ -0,0 +1,25 @@
version: '3.8'
services:
cursor-auto-register:
build:
context: .
dockerfile: Dockerfile
image: cursor-auto-register:latest
container_name: cursor-auto-register
restart: unless-stopped
shm_size: '2gb'
ports:
- "8000:8000"
volumes:
- ./data:/app/data
- ./.env:/app/.env
environment:
- TZ=Asia/Shanghai
- PYTHONUNBUFFERED=1
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:8000/health"]
interval: 30s
timeout: 10s
retries: 3
start_period: 30s