Docker(推荐)
Docker(推荐)(Docker (recommended))
目录
Docker 是一个在隔离的容器中运行应用的工具。你不必在服务器上直接安装 Wavelog 和数据库,Docker 会为你统一管理这两者——打包封装、便于迁移、易于更新。这是我们推荐的安装方式,因为它能减少维护工作量,并让后续更新变得简单。
本指南会搭建两个容器:
wavelog-db—— 用于存储你全部 QSO 和设置的 MariaDB 数据库wavelog-main—— Wavelog Web 应用本身
两个容器都定义在同一个 docker-compose.yml 文件中,只需一条命令即可启动。你的数据存储在 Docker 数据卷中,因此容器重启和更新后数据仍然保留。
前提条件
开始之前,请确认你的机器上已安装 Docker。可用以下命令验证:
docker --version
docker compose version
如果任一命令提示未找到,请先安装:
- Docker Engine(Linux)或 Docker Desktop(Windows/macOS)
- Docker Compose 已包含在 Docker Desktop 中,在 Linux 上则以插件形式提供
第 1 步 —— 创建 compose 文件
为 Wavelog 新建一个文件夹,并在其中把以下内容保存为 docker-compose.yml:
mkdir ~/wavelog && cd ~/wavelog
services:
wavelog-db:
image: mariadb:11.8
container_name: wavelog-db
environment:
MARIADB_RANDOM_ROOT_PASSWORD: yes
MARIADB_DATABASE: wavelog
MARIADB_USER: wavelog
MARIADB_PASSWORD: wavelog # <- Insert a strong password here
volumes:
- wavelog-dbdata:/var/lib/mysql
restart: unless-stopped
wavelog-main:
container_name: wavelog-main
image: ghcr.io/wavelog/wavelog:latest
depends_on:
- wavelog-db
environment:
CI_ENV: docker
volumes:
- wavelog-config:/var/www/html/application/config/docker
- wavelog-uploads:/var/www/html/uploads
- wavelog-userdata:/var/www/html/userdata
ports:
- "8086:80"
restart: unless-stopped
volumes:
wavelog-dbdata:
wavelog-uploads:
wavelog-userdata:
wavelog-config:
危险:修改密码
在启动服务栈之前,请把
MARIADB_PASSWORD中的wavelog替换为一个强密码。安装过程中你会用到它。MariaDB 会在首次启动时用该密码完成自身配置,因此必须在启动容器之前设置好。
第 2 步 —— 启动服务栈
在 docker-compose.yml 所在的文件夹中运行以下命令:
docker compose up -d
-d 参数会让容器在后台运行。首次运行时 Docker 会下载镜像,可能需要一分钟。完成后,请检查两个容器是否都在运行:
docker ps -a
你应当看到 wavelog-db 和 wavelog-main 的状态为 Up。
第 3 步 —— 运行安装程序
打开浏览器并访问以下 URL:
注意(已启用反向代理?)
如果你已经部署了反向代理,建议直接访问最终 URL,因为 Wavelog 会根据你访问安装程序时所用的 URL 来配置自身。虽然之后仍可修改,但直接使用最终 URL 可以省去额外的工作。
http://[your-server-ip]:8086/install
按照安装向导逐步操作,所有重要内容都在其中有说明。请务必仔细阅读并理解。
信息
数据库主机名是
wavelog-db,也就是服务栈中数据库容器的名称,而不是localhost。
在安装向导的最后一步点击「安装」。Wavelog 将创建其数据库表,并把你重定向到登录页面。在较慢的系统上,这个过程可能需要几分钟!
反向代理
默认情况下,Wavelog 可通过端口 8086 访问。如果你想让它在正式域名(例如 wavelog.example.com)上提供服务,就需要一个反向代理。以下是一个最简 nginx 配置:
server {
listen 80;
server_name wavelog.example.com;
location / {
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_pass http://127.0.0.1:8086;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}
}
提示
强烈建议通过 HTTPS 提供 Wavelog 服务。包含 SSL 的完整示例请参见 Web 服务器配置。
后续步骤
调整 config.php
查看配置指南,了解如何根据自身需求调整 config.php。
在 Docker 部署中,配置文件会在安装之后出现在 wavelog-config 数据卷中,你可以在那里编辑它。无需重启 wavelog-main 容器,修改会立即生效。
在安装之前,该文件必须不存在,否则安装程序不会运行。安装过程中,它会被复制到正确的位置,随后即可在那里编辑。如果你想重置安装,请参阅此指南:重置安装。
调试
如果某些功能无法正常工作,请先检查容器日志:
# Stream live logs from the Wavelog container
docker logs --follow wavelog-main
如需更详细的信息,可调高 config.php 中的 log_threshold 值(见上文)。之后应用日志会写入容器内的 /var/www/html/application/logs。
计划任务(cron)
Docker 镜像默认启用 Cron Manager。可在 Web 界面中的 管理 → Cron Manager 下管理任务——无需手动配置 crontab。如果你完全不想让容器运行 cron,请设置环境变量 DISABLE_CRON=true(参见可选配置)。
可选配置(自 v2.5.1 起)
如果你确实需要修改某些经过精心挑选的默认设置,可以在 docker-compose.yml 中为 wavelog-main 服务添加环境变量来实现。可用的选项如下:
| 变量名 | 说明 | 默认值 |
|---|---|---|
PHP_MEMORY_LIMIT |
覆盖默认的 PHP 内存上限。 | 256M |
PHP_MAX_EXECUTION_TIME |
覆盖默认的 PHP 最大执行时间。 | 600 |
PHP_UPLOAD_MAX_FILESIZE |
覆盖默认的 PHP 上传文件大小上限。 | 64M |
PHP_POST_MAX_SIZE |
覆盖默认的 PHP POST 最大尺寸。 | 64M |
PUID |
设置容器内文件的属主。 | 999 |
PGID |
设置容器内文件的属组。如果只设置了 PUID 或 PGID 中的一个,另一个将默认为 www-data,其值为 33。 |
33 |
DISABLE_CRON |
设为 true 以不在容器内启动 cron 守护进程,例如当你在外部或单独的容器中运行计划任务时。 |
false |