无需编译源码。准备好 Docker 后,用已发布的公开镜像即可自托管。
docker compose)ghcr.iomkdir -p /opt/sharelens && cd /opt/sharelens
下载本页托管的 Compose 与环境变量样例(也可直接点下方链接保存):
curl -fsSL -o docker-compose.yml https://ulooo.com/sharelens/docker/docker-compose.yml
curl -fsSL -o env.sample https://ulooo.com/sharelens/docker/env.sample
cp env.sample .env
创建数据与日志映射目录:
mkdir -p app_storage logs/app logs/nginx backups uploads mysql_data
app_storage — 应用 storagelogs/app / logs/nginx — 日志backups / uploads — 备份与上传文件mysql_data — MySQL 数据若上一步已 cp env.sample .env,直接编辑 .env,至少设置:
# 镜像版本(按实际发布标签修改,例如 v11)
APP_IMAGE=ghcr.io/ulooocom/sharelens:v11
# Laravel 密钥(生产必须设置)
# openssl rand -base64 32 → APP_KEY=base64:…
APP_KEY=
APP_URL=https://sharelens.example.com
APP_PORT=8080
DB_PASSWORD=请改成强密码
MYSQL_ROOT_PASSWORD=请改成另一个强密码
MAIL_HOST=smtp.example.com
MAIL_USERNAME=
MAIL_PASSWORD=
MAIL_FROM_ADDRESS=noreply@example.com
生成 APP_KEY:
echo "APP_KEY=base64:$(openssl rand -base64 32)"
前面有反向代理时,保持 TRUSTED_PROXIES=* 即可。
docker compose up -d
首次会拉取应用、MySQL、Redis 镜像;app 容器启动时会自动执行数据库迁移。
docker compose ps
docker compose logs -f app
浏览器访问 http://服务器IP:8080(或你在 APP_URL / 反代中配置的域名)。
# 停止(保留数据目录)
docker compose down
# 更新到新版本:先改 .env 中的 APP_IMAGE,再拉取并重建
docker compose pull
docker compose up -d
# 在 app 容器里执行 artisan
docker compose exec app php artisan migrate --force
app(Web)、queue、scheduler、mysql、redis。mysql_data、uploads、backups 与 .env。.env 提交到公开仓库。