mirror of
https://github.com/ddCat-main/cursor-auto-register.git
synced 2025-12-24 13:38:01 +08:00
feat:docker配置
This commit is contained in:
48
.dockerignore
Normal file
48
.dockerignore
Normal 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
|
||||
@@ -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
118
DOCKER_DEPLOY.md
Normal 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
64
Dockerfile
Normal 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"]
|
||||
32
README.md
32
README.md
@@ -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
25
docker-compose.yml
Normal 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
|
||||
Reference in New Issue
Block a user