外观
Docker 安装
Docker Compose 管理 PHP 运行环境、MySQL 和 Nginx。服务端源码放在宿主机 /srv/popoim,以目录挂载方式供容器读取;安装生成的配置、日志和资源仍保留在宿主机。
1. 准备 Docker
使用 Docker Engine 与 Compose 插件。Ubuntu 24.04 可安装发行版提供的软件包:
bash
sudo apt update
sudo apt install -y docker.io docker-compose-v2
sudo systemctl enable --now docker
sudo docker compose version其他发行版参考 Docker 官方安装说明。以下命令均在服务端源码目录执行。
2. 设置数据库密码
bash
cd /srv/popoim
cp deploy/docker.env.example .env
chmod 600 .env编辑 .env,分别为 MYSQL_PASSWORD 和 MYSQL_ROOT_PASSWORD 设置不同的随机强密码。保留 MYSQL_DATABASE=popoim、MYSQL_USER=popoim,或按需修改。
默认入口为 127.0.0.1:8080,由宿主机 Nginx 提供 HTTPS。仅在隔离网络中需要直接访问时,将 HTTP_BIND 改成所需的宿主机地址。
3. 构建运行环境
bash
sudo docker compose build app
sudo docker compose run --rm --no-deps app \
composer install --no-dev --prefer-dist --no-interaction
sudo docker compose up -d
sudo docker compose psPHP 环境包含聊天、图片和媒体处理需要的扩展、FFmpeg 和 Composer;构建上下文排除了业务源码。MySQL 自动设置 ngram_token_size=1,数据保存在 mysql-data 卷。Nginx 只把站点公开目录作为静态资源入口。
第一次启动需等待 MySQL 健康检查通过:
bash
sudo docker compose logs --tail=80 mysql app
curl -s -L -o /dev/null -w '%{http_code}\n' http://127.0.0.1:8080/install4. 反向代理与安装
宿主机 Nginx 将 example.com 代理到 127.0.0.1:8080。location / 需要保留 WebSocket 升级头:
nginx
location / {
proxy_pass http://127.0.0.1:8080;
proxy_http_version 1.1;
proxy_set_header Host $http_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 Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_read_timeout 3600s;
proxy_buffering off;
}站点同时设置 client_max_body_size 128m,配置 HTTPS 后访问 https://example.com/install。
安装向导中填写:
| 字段 | 填写值 |
|---|---|
| 数据库地址 | mysql,不是 127.0.0.1 |
| 数据库端口 | 3306 |
| 数据库用户名 | .env 的 MYSQL_USER |
| 数据库密码 | .env 的 MYSQL_PASSWORD |
| 数据库名 | .env 的 MYSQL_DATABASE |

5. 更新与维护
替换宿主机源码时保留 .env、部署配置、资源及会话。依赖变更后重新安装,再重启:
bash
sudo docker compose run --rm --no-deps app \
composer install --no-dev --prefer-dist --no-interaction
sudo docker compose restart app只有 PHP 扩展或 Dockerfile 变更时才需要重新构建环境镜像。不要在普通更新中执行 docker compose down -v,它会删除数据库卷。
备份范围包括 MySQL、宿主机 public/uploads/、config/database.php、plugin/sdk/config/auth.php 和 .env。详细步骤见备份与恢复。
