docs: 📝 update environment configuration and data directory documentation

- Revised `.env.example` to clarify data storage configuration for local development and Docker usage.
- Enhanced `DATA_DIRECTORY.md` with detailed instructions on data persistence, backup, and recovery using Docker Named Volumes.
- Updated `docker-compose.yml` to utilize Named Volume for data storage, ensuring data persistence across container lifecycles.
- Adjusted README to reflect changes in data directory management and deployment instructions.
This commit is contained in:
isboyjc
2026-03-29 05:17:56 +08:00
parent 1b9d1bfeaa
commit 0cff1ea6a6
4 changed files with 142 additions and 22 deletions

View File

@@ -28,8 +28,9 @@ WEBUI_HOST=0.0.0.0 # WebUI 可对外访问(有登录认证保护
WEBUI_PORT=7778
WEBUI_PASSWORD=goproxy # ⚠️ 生产环境请修改为强密码
# 数据存储
DATA_DIR=./data
# 数据存储配置(仅 docker run 本地开发需要)
# docker-compose.yml 使用 Named Volume无需此配置
# DATA_DIR=./data
# 时区配置
TZ=Asia/Shanghai

View File

@@ -1,6 +1,8 @@
# Data 目录说明
`data/` 目录用于存储 GoProxy 的所有运行时数据和配置。
GoProxy 的所有运行时数据和配置存储在数据目录中
**默认配置**`docker-compose.yml`):使用 Docker Named Volume `goproxy-data`,由 Docker 自动管理,数据持久化且独立于容器生命周期。
## 📁 目录内容
@@ -49,9 +51,100 @@
> 💡 **注意**`config.json` 是运行时生成的,首次启动时不存在,使用默认配置。通过 WebUI 修改配置后会自动保存到此文件。
## 🐳 Docker 挂载
## 📍 数据位置
### 为什么需要挂载 data 目录?
### Dokploy / 生产部署Named Volume
**卷名称**`goproxy-data`
**实际位置**Linux
```bash
/var/lib/docker/volumes/goproxy-data/_data/
```
**查看数据**
```bash
# 进入运行中的容器
docker exec -it proxygo sh
# 查看数据目录
ls -lh /app/data/
# 查看数据库
sqlite3 /app/data/proxy.db "SELECT COUNT(*) FROM proxies;"
```
**备份数据**
```bash
# 手动导出卷
docker run --rm -v goproxy-data:/data -v $(pwd):/backup \
alpine tar czf /backup/goproxy-backup-$(date +%Y%m%d).tar.gz -C /data .
```
**恢复数据**
```bash
# 停止服务
docker compose down
# 恢复备份
docker run --rm -v goproxy-data:/data -v $(pwd):/backup \
alpine sh -c "cd /data && tar xzf /backup/goproxy-backup-20260328.tar.gz"
# 重启服务
docker compose up -d
```
### 本地开发(相对路径挂载)
如果使用 `docker run -v "$(pwd)/data:/app/data"`,数据会保存在项目目录的 `./data` 文件夹中。
**查看数据**
```bash
# 直接查看宿主机目录
ls -lh data/
# 查看数据库
sqlite3 data/proxy.db "SELECT COUNT(*) FROM proxies;"
```
**备份数据**
```bash
# 简单打包
tar czf goproxy-backup-$(date +%Y%m%d).tar.gz data/
# 或仅备份数据库
cp data/proxy.db backups/proxy-$(date +%Y%m%d).db
```
## 🐳 Docker 挂载配置
### 使用 Named Volume推荐
`docker-compose.yml` 中:
```yaml
volumes:
- goproxy-data:/app/data # Named Volume
volumes:
goproxy-data: # 定义卷
```
**优势**
- ✅ 数据持久化,容器删除不丢失
- ✅ Docker 自动管理,无需关心具体路径
- ✅ 支持备份和迁移
- ✅ 适合生产环境和自动化部署
### 使用本地目录(本地开发)
`docker run` 中:
```bash
docker run -v "$(pwd)/data:/app/data" ...
```
### 为什么需要持久化?
**持久化数据**
- 容器重启/更新后代理池数据不丢失

View File

@@ -97,7 +97,7 @@ GoProxy 从多个公开代理源自动抓取 HTTP/SOCKS5 代理,通过严格
├── .github/workflows/
│ └── docker-image.yml # 🆕 GitHub Actions 自动构建(多平台镜像)
├── .env.example # 🆕 环境变量配置模板
├── docker-compose.yml # 🆕 Docker Compose 配置(自动更新镜像
├── docker-compose.yml # 🆕 Docker Compose 配置(使用 Named Volume
├── Dockerfile # Docker 构建文件
├── data/ # 🆕 数据目录SQLite 数据库、配置文件)
│ └── .gitkeep # 目录占位符和说明
@@ -248,14 +248,14 @@ export https_proxy=http://proxy:your_password@192.168.1.100:7777
### 快速启动(推荐)
使用 docker-compose,支持环境变量配置,自动拉取最新镜像
使用 docker-compose 一键部署
```bash
# 1. 复制环境变量模板
# 1. 复制环境变量模板(可选,使用默认配置也可直接启动)
cp .env.example .env
# 2. 根据需要编辑 .env可选,默认配置即可使用
# vim .env
# 2. 编辑 .env 设置密码等(可选)
vim .env
# 3. 启动服务(自动拉取最新镜像)
docker compose up -d
@@ -264,26 +264,49 @@ docker compose up -d
# http://localhost:7778默认密码goproxy
```
### 使用预构建镜像docker run
**数据持久化**
- ✅ 使用 Docker Named Volume `goproxy-data`
- ✅ 容器重启/更新不会丢失数据
- ✅ 数据独立存储,不受项目目录影响
**推荐使用 GitHub Container Registry**(自动构建,无需额外配置):
### docker run 方式部署
```bash
docker pull ghcr.io/isboyjc/goproxy:latest
docker run -d --name proxygo \
-p 127.0.0.1:7776:7776 -p 127.0.0.1:7777:7777 -p 7778:7778 \
-e WEBUI_PASSWORD=your_password -v "$(pwd)/data:/app/data" \
-p 127.0.0.1:7776:7776 \
-p 127.0.0.1:7777:7777 \
-p 7778:7778 \
-e WEBUI_PASSWORD=your_password \
-v goproxy-data:/app/data \
ghcr.io/isboyjc/goproxy:latest
```
**或使用 Docker Hub**(如果已配置):
> 💡 **数据卷说明**:使用 Named Volume `goproxy-data` 确保数据持久化。如需本地开发调试,可改用 `-v "$(pwd)/data:/app/data"`。
### 数据备份与恢复
**导出数据**
```bash
docker pull isboyjc/goproxy:latest
docker run -d --name proxygo \
-p 127.0.0.1:7776:7776 -p 127.0.0.1:7777:7777 -p 7778:7778 \
-e WEBUI_PASSWORD=your_password -v "$(pwd)/data:/app/data" \
isboyjc/goproxy:latest
# 导出 Named Volume 数据
docker run --rm \
-v goproxy-data:/data \
-v $(pwd):/backup \
alpine tar czf /backup/goproxy-backup-$(date +%Y%m%d).tar.gz -C /data .
```
**恢复数据**
```bash
# 停止服务
docker compose down
# 恢复备份
docker run --rm \
-v goproxy-data:/data \
-v $(pwd):/backup \
alpine sh -c "cd /data && tar xzf /backup/goproxy-backup-20260328.tar.gz"
# 重启服务
docker compose up -d
```
### 环境变量配置

View File

@@ -16,7 +16,7 @@ services:
- "${PROXY_HOST:-127.0.0.1}:${RANDOM_PORT:-7777}:7777" # 随机轮换
- "${WEBUI_HOST:-0.0.0.0}:${WEBUI_PORT:-7778}:7778" # WebUI有登录认证
volumes:
- ${DATA_DIR:-./data}:/app/data
- goproxy-data:/app/data
environment:
- TZ=${TZ:-Asia/Shanghai}
- DATA_DIR=/app/data
@@ -30,3 +30,6 @@ services:
interval: 30s
timeout: 5s
retries: 3
volumes:
goproxy-data: