dailiip/DOCKER_README.md

285 lines
5.6 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 代理IP管理系统 Docker 部署指南
## 🐳 Docker 快速开始
> 📌 **国内用户注意**Dockerfile已配置国内镜像源加速包括
> - Alpine Linux包管理器使用阿里云镜像源
> - npm使用淘宝镜像源
> - 大幅提升构建速度!
### 方式一:使用 Docker Compose推荐
1. **克隆项目**
```bash
git clone <your-repo-url>
cd dailiip
```
2. **构建并启动容器**
```bash
docker-compose up -d
```
3. **查看日志**
```bash
docker-compose logs -f proxy-manager
```
4. **访问应用**
- 浏览器访问http://localhost:3000
- API地址http://localhost:3000/api
### 方式二:使用 Docker 命令
1. **构建镜像**
```bash
docker build -t proxy-ip-manager .
```
2. **运行容器**
```bash
# 基本运行
docker run -d -p 3000:3000 --name proxy-manager proxy-ip-manager
# 带数据持久化
docker run -d \
-p 3000:3000 \
-v $(pwd)/data:/app/data \
-v $(pwd)/logs:/app/logs \
--name proxy-manager \
--restart unless-stopped \
proxy-ip-manager
```
## 📁 目录结构
```
dailiip/
├── Dockerfile # Docker构建文件
├── docker-compose.yml # Docker Compose配置
├── .dockerignore # Docker忽略文件
├── src/ # 源代码
├── public/ # 静态文件
├── data/ # 数据库文件(运行时创建)
└── logs/ # 日志文件(运行时创建)
```
## ⚙️ 环境变量
| 变量名 | 默认值 | 说明 |
|--------|--------|------|
| NODE_ENV | production | 运行环境 |
| PORT | 3000 | 应用端口 |
## 📊 数据持久化
### Docker Compose 方式
数据库文件会自动保存到 `./data` 目录,日志保存到 `./logs` 目录。
### Docker 命令方式
使用 `-v` 参数挂载本地目录:
```bash
-v /path/to/your/data:/app/data
-v /path/to/your/logs:/app/logs
```
## 🔧 常用命令
### Docker Compose
```bash
# 启动服务
docker-compose up -d
# 停止服务
docker-compose down
# 查看日志
docker-compose logs -f
# 重新构建
docker-compose up -d --build
# 进入容器
docker-compose exec proxy-manager sh
```
### Docker 命令
```bash
# 查看运行状态
docker ps
# 查看日志
docker logs proxy-manager
# 进入容器
docker exec -it proxy-manager sh
# 停止容器
docker stop proxy-manager
# 启动容器
docker start proxy-manager
# 删除容器
docker rm proxy-manager
```
## 🔍 健康检查
容器包含内置的健康检查每30秒检查一次
```bash
# 查看健康状态
docker inspect proxy-manager | grep Health -A 10
# 查看健康检查日志
docker inspect proxy-manager | grep Log -A 5
```
## 🚨 故障排除
### 1. 容器无法启动
```bash
# 查看详细错误日志
docker-compose logs proxy-manager
# 检查端口是否被占用
netstat -tlnp | grep 3000
```
### 2. 数据库问题
```bash
# 检查数据目录权限
ls -la data/
# 重新创建数据目录
sudo rm -rf data logs
mkdir -p data logs
sudo chown -R 1000:1000 data logs
```
### 3. 日志文件权限问题
如果遇到 `EACCES: permission denied` 错误:
```bash
# Linux/Mac
mkdir -p logs
chmod 777 logs # 或者 chmod 755 logs
# Windows PowerShell (如果使用Docker Desktop)
New-Item -ItemType Directory -Path logs -Force
# 在Docker Desktop设置中确保目录有正确权限
# 或者删除logs目录让容器自动创建
rm -rf logs
# 然后重新启动容器
docker-compose up -d
```
**注意**:容器内使用 `node` 用户UID 1000运行确保挂载的logs目录对该用户有写入权限。
### 4. 性能优化
```bash
# 限制内存使用
docker run -d --memory=512m proxy-ip-manager
# 设置CPU限制
docker run -d --cpus=0.5 proxy-ip-manager
```
## 📈 监控
### 使用健康检查API
```bash
curl http://localhost:3000/api/health
```
### 查看资源使用情况
```bash
# 查看容器资源使用
docker stats proxy-manager
# 查看磁盘使用
docker system df
```
## 🔄 更新应用
```bash
# 拉取最新代码
git pull
# 重新构建并启动
docker-compose up -d --build
```
## 🐛 调试模式
如需调试,可以临时修改环境变量:
```bash
# 修改 docker-compose.yml
environment:
- NODE_ENV=development
- DEBUG=proxy:*
# 或使用 Docker 命令
docker run -d -e NODE_ENV=development -e DEBUG=proxy:* proxy-ip-manager
```
## 🔒 安全建议
1. **使用非root用户运行**Dockerfile中已配置
2. **限制网络访问**:根据需要配置防火墙
3. **定期更新镜像**
```bash
docker pull node:24.11.0-alpine
docker-compose up -d --build
```
## 🇨🇳 国内用户加速(可选)
### Docker Hub镜像加速
如果Docker Hub拉取镜像较慢可以配置国内镜像加速
```bash
# 配置Docker镜像加速器以阿里云为例
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": [
"https://docker.mirrors.ustc.edu.cn",
"https://hub-mirror.c.163.com",
"https://mirror.baidubce.com"
]
}
EOF
# 重启Docker服务
sudo systemctl daemon-reload
sudo systemctl restart docker
```
### 构建时使用国内Node.js镜像
```bash
# 直接使用国内镜像源构建
docker build -t proxy-ip-manager .
# 或者指定国内镜像构建
docker build --build-arg REGISTRY=https://registry.npmmirror.com -t proxy-ip-manager .
```
4. **备份数据**
```bash
# 备份数据库
tar -czf backup-$(date +%Y%m%d).tar.gz data/ logs/
```
## 📞 支持
如遇问题,请检查:
1. Docker和Docker Compose版本是否兼容
2. 端口3000是否被占用
3. 磁盘空间是否充足
4. 查看容器日志获取详细错误信息