hi-frontend/docs/zh/guide/installation/docker-compose.md

465 lines
9.0 KiB
Markdown
Raw 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.

# Docker Compose 部署
Docker Compose 是生产环境推荐的部署方式。它提供更好的服务管理、更简单的配置和更便捷的升级流程。
## 前置条件
### 安装 Docker
如果你还没有安装 Docker请按照官方安装指南进行安装
**Ubuntu/Debian:**
```bash
# 更新包索引
sudo apt-get update
# 安装必要的依赖包
sudo apt-get install -y ca-certificates curl gnupg lsb-release
# 添加 Docker 官方 GPG 密钥
sudo mkdir -p /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
# 设置仓库
echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \
$(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
# 安装 Docker Engine
sudo apt-get update
sudo apt-get install -y docker-ce docker-ce-cli containerd.io docker-compose-plugin
```
**CentOS/RHEL:**
```bash
# 安装 yum-utils
sudo yum install -y yum-utils
# 添加 Docker 仓库
sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
# 安装 Docker Engine
sudo yum install -y docker-ce docker-ce-cli containerd.io docker-compose-plugin
# 启动 Docker 服务
sudo systemctl start docker
sudo systemctl enable docker
```
### 验证安装
```bash
# 查看 Docker 版本
docker --version
# 查看 Docker Compose 版本
docker compose version
# 测试 Docker 安装
sudo docker run hello-world
```
## 部署步骤
### 步骤 1: 创建项目目录
```bash
# 创建项目目录
mkdir -p ~/ppanel
cd ~/ppanel
```
### 步骤 2: 创建 docker-compose.yml
创建 `docker-compose.yml` 文件,内容如下:
```yaml
version: '3.8'
services:
ppanel-service:
image: ppanel/ppanel:latest
container_name: ppanel-service
restart: always
ports:
- "8080:8080"
volumes:
- ./config:/app/etc:ro
- ./web:/app/static
networks:
- ppanel-net
healthcheck:
test: ["CMD", "wget", "--quiet", "--tries=1", "--spider", "http://localhost:8080/health"]
interval: 30s
timeout: 10s
retries: 3
start_period: 40s
networks:
ppanel-net:
driver: bridge
```
**配置说明:**
- **image**: 使用的 Docker 镜像latest 或指定版本如 `v0.1.2`
- **container_name**: 设置自定义容器名称
- **ports**: 将容器的 8080 端口映射到宿主机的 8080 端口(可根据需要修改宿主机端口)
- **volumes**:
- `./config:/app/etc:ro` - 配置目录(只读)
- `./web:/app/static` - 静态文件目录(管理后台和用户前端)
- **networks**: 创建自定义网络以实现服务隔离
- **restart**: 自动重启策略always 表示总是重启)
- **healthcheck**: 服务健康检查
### 步骤 3: 准备配置
```bash
# 创建配置目录
mkdir -p config
# 创建配置文件
cat > config/ppanel.yaml <<EOF
Host: 0.0.0.0
Port: 8080
TLS:
Enable: false
CertFile: ""
KeyFile: ""
Debug: false
Static:
Admin:
Enabled: true
Prefix: /admin
Path: ./static/admin
User:
Enabled: true
Prefix: /
Path: ./static/user
JwtAuth:
AccessSecret: your-secret-key-change-this
AccessExpire: 604800
Logger:
ServiceName: ApiService
Mode: console
Encoding: plain
TimeFormat: "2006-01-02 15:04:05.000"
Path: logs
Level: info
MaxContentLength: 0
Compress: false
Stat: true
KeepDays: 0
StackCooldownMillis: 100
MaxBackups: 0
MaxSize: 0
Rotation: daily
FileTimeFormat: 2006-01-02T15:04:05.000Z07:00
MySQL:
Addr: localhost:3306
Username: your-username
Password: your-password
Dbname: ppanel
Config: charset=utf8mb4&parseTime=true&loc=Asia%2FShanghai
MaxIdleConns: 10
MaxOpenConns: 10
SlowThreshold: 1000
Redis:
Host: localhost:6379
Pass: your-redis-password
DB: 0
EOF
```
::: warning 必需配置
**MySQL 和 Redis 是必需的。** 部署前请配置以下项:
- `JwtAuth.AccessSecret` - 使用强随机密钥(必需)
- `MySQL.*` - 配置你的 MySQL 数据库连接(必需)
- `Redis.*` - 配置你的 Redis 连接(必需)
:::
### 步骤 4: 启动服务
```bash
# 拉取最新镜像
docker compose pull
# 以守护进程模式启动
docker compose up -d
# 查看日志
docker compose logs -f
```
### 步骤 5: 验证部署
```bash
# 查看服务状态
docker compose ps
# 测试服务是否可访问
curl http://localhost:8080
# 查看实时日志
docker compose logs -f ppanel
```
## 部署后配置
### 访问应用
安装成功后,你可以通过以下地址访问:
- **用户面板**: `http://your-server-ip:8080`
- **管理后台**: `http://your-server-ip:8080/admin/`
::: warning 默认凭据
**默认管理员账号**(如果未配置时):
- **邮箱**: `admin@ppanel.dev`
- **密码**: `password`
**安全提醒**: 首次登录后请立即修改默认凭据。
:::
### 配置反向代理(推荐)
对于生产环境部署,建议使用 Nginx 或 Caddy 作为反向代理以启用 HTTPS。
**Nginx 配置:**
```nginx
server {
listen 80;
server_name your-domain.com;
# 重定向到 HTTPS
return 301 https://$server_name$request_uri;
}
server {
listen 443 ssl http2;
server_name your-domain.com;
ssl_certificate /path/to/your/certificate.crt;
ssl_certificate_key /path/to/your/private.key;
location / {
proxy_pass http://localhost:8080;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Forwarded-Host $host;
proxy_set_header X-Forwarded-Port $server_port;
}
}
```
**Caddy 配置:**
```
your-domain.com {
reverse_proxy localhost:8080
}
```
::: tip 提示
Caddy 会通过 Let's Encrypt 自动处理 SSL 证书。
:::
## 服务管理
### 查看日志
```bash
# 查看所有日志
docker compose logs
# 实时跟踪日志
docker compose logs -f
# 查看特定服务日志
docker compose logs ppanel
```
### 停止服务
```bash
# 停止所有服务
docker compose stop
# 停止特定服务
docker compose stop ppanel
```
### 重启服务
```bash
# 重启所有服务
docker compose restart
# 重启特定服务
docker compose restart ppanel
```
### 停止并删除服务
```bash
# 停止并删除容器
docker compose down
# 停止并删除容器和数据卷
docker compose down -v
```
::: warning 数据持久化
使用 `docker compose down -v` 会删除所有数据卷。只有在想完全清除所有数据时才使用此命令。
:::
## 升级
直接从**管理后台**主页升级 PPanel。在仪表盘主页可以检查新版本并一键升级。
::: tip 提示
系统会自动处理升级过程,包括拉取新镜像和重启服务。
:::
## 高级配置
### 自定义端口
要使用不同的端口,编辑 `docker-compose.yml`
```yaml
services:
ppanel-service:
ports:
- "3000:8080" # 宿主机端口 3000 -> 容器端口 8080
```
### 多实例部署
要运行多个实例,创建独立的目录:
```bash
# 实例 1
mkdir ~/ppanel-1
cd ~/ppanel-1
# 创建 docker-compose.yml使用端口 8081
# 实例 2
mkdir ~/ppanel-2
cd ~/ppanel-2
# 创建 docker-compose.yml使用端口 8082
```
### 资源限制
添加资源限制以防止过度消耗:
```yaml
services:
ppanel:
# ... 其他配置 ...
deploy:
resources:
limits:
cpus: '2'
memory: 2G
reservations:
cpus: '0.5'
memory: 512M
```
### 自定义网络
创建自定义网络以获得更好的隔离:
```yaml
version: '3.8'
services:
ppanel:
# ... 其他配置 ...
networks:
- ppanel-net
networks:
ppanel-net:
driver: bridge
```
## 故障排除
### 容器启动失败
```bash
# 查看错误日志
docker compose logs ppanel
# 检查容器状态
docker compose ps
# 验证配置
docker compose config
```
### 端口被占用
```bash
# 检查什么在使用该端口
sudo lsof -i :8080
# 在 docker-compose.yml 中更改端口
# ports:
# - "8081:8080"
```
### 权限问题
```bash
# 修复配置目录权限
sudo chown -R $USER:$USER config/
# 确保文件可读
chmod 644 config/ppanel.yaml
```
### 无法从外部访问
1. **检查防火墙规则:**
```bash
# Ubuntu/Debian
sudo ufw allow 8080
# CentOS/RHEL
sudo firewall-cmd --add-port=8080/tcp --permanent
sudo firewall-cmd --reload
```
2. **验证服务是否监听:**
```bash
docker compose ps
netstat -tlnp | grep 8080
```
## 下一步
- [配置指南](/zh/guide/configuration) - 详细的配置选项
- [管理后台](/zh/admin/dashboard) - 开始管理你的面板
- [API 参考](/zh/api/reference) - API 集成指南
## 需要帮助?
如果遇到任何问题:
1. 查看上面的[故障排除](#故障排除)部分
2. 查看 [Docker Compose 日志](#查看日志)
3. 搜索 [GitHub Issues](https://github.com/perfect-panel/ppanel/issues)
4. 创建新 issue 并附上详细的系统信息和日志