智享评鉴

Docker 镜像部署

v25

无需编译源码。准备好 Docker 后,用已发布的阿里云镜像即可自托管(国内拉取更快)。v25 应用镜像基于 PHP 8.4.27,含官方安全修复。

registry.cn-shanghai.aliyuncs.com/ulooocom/sharelens 公开镜像无需登录
app queue scheduler mysql redis

前置条件

1. 准备部署目录

任选一台服务器,新建目录并进入(不必克隆整个仓库):

mkdir -p /opt/sharelens && cd /opt/sharelens

下载部署打包文件(含 docker-compose.yml、.env.sample、update.sh 与包内校验和):

curl -fsSL -O https://ulooo.com/sharelens/docker/sharelens-docker.zip
curl -fsSL -O https://ulooo.com/sharelens/docker/SHA256SUMS.txt

# 校验压缩包(下载后、解压前)
sha256sum -c SHA256SUMS.txt
# macOS 可用: shasum -a 256 -c SHA256SUMS.txt

unzip sharelens-docker.zip

# 请先审阅 update.sh,确认无异常后再授权执行
less update.sh
chmod +x update.sh

创建数据与日志映射目录:

mkdir -p app_storage logs/app logs/nginx backups uploads mysql_data redis_data

2. 配置环境变量

cp .env.sample .env

用编辑器打开 .env,至少修改下列项:

# 镜像版本(按需改成实际发布标签,例如 v25)
APP_IMAGE=registry.cn-shanghai.aliyuncs.com/ulooocom/sharelens:v25

# Laravel 密钥(生产必须设置,且部署后不要轻易更换)
# 可执行: openssl rand -base64 32
# 然后写成: APP_KEY=base64:生成的内容
APP_KEY=

# 访问地址与端口
APP_URL=https://sharelens.example.com
APP_PORT=8080

# 数据库密码(必填,且足够复杂)
DB_PASSWORD=请改成强密码
MYSQL_ROOT_PASSWORD=请改成另一个强密码

# 后台路径(不要用 admin)。留空则首次启动自动生成 admin_xxxxxx
ADMIN_PATH=

生成 APP_KEY 示例:

echo "APP_KEY=base64:$(openssl rand -base64 32)"
# 将输出写入 .env 的 APP_KEY=

可选:GitHub / Google OAuth、Sentry 等按 .env 内注释自行填写。前面有反向代理时,保持 TRUSTED_PROXIES=* 即可。

邮件 SMTP 请在启动后到后台「设置 → 邮件 SMTP」配置;.env 默认为 MAIL_MAILER=log,未配置前不会真发信。空间里的「邮件发送待评提醒」依赖 SMTP,以及 queue / scheduler 容器。

3. 启动

docker compose up -d

首次会拉取应用、MySQL、Redis 镜像;app 容器启动时会自动执行数据库迁移。

查看状态与日志:

docker compose ps
docker compose logs -f app

浏览器访问:http://服务器IP:8080(或你在 APP_URL / 反代中配置的域名)。

常用操作

# 停止(保留数据目录;不要加 -v,否则会删掉 named volume)
docker compose down

# 更新到新版本:优先用滚动脚本(只重建 app / queue / scheduler,不碰 Redis)
./update.sh v25

# 在 app 容器里执行 artisan
docker compose exec app php artisan migrate --force

已有环境若刚加上 redis_data 卷:先 mkdir -p redis_data,再 docker compose up -d redis。命令变更会重建 Redis,这一次登录态仍会失效;之后容器重建、整栈 down/up、宿主机重启都会保留 session。

说明