2.3 KiB
网站容器
镜像在独立构建阶段编译 Vue 和启用 CGO 的 Go 程序。最终镜像运行单个 webserver 进程,同时提供静态资源和 API。容器配置、SQLite、上传文件和日志由部署机挂载。
构建和验证
需要 Linux Docker Engine 和 Buildx。在源码根目录运行:
docker build -t autolibrary-web:local .
bash deploy/smoke-container.sh autolibrary-web:local
冒烟测试使用临时配置和空数据库,在无外部网络的容器里验证首页、后端健康检查、深层路由、静态资源、SQLite API 和 SIGTERM 退出。
Gitea Actions 在 main 和 container-ci 推送时执行同一套镜像构建和冒烟测试。专用 Runner hk-vps-runner-02 使用 linux-amd64-docker-small 标签,作业在 Docker CLI 容器中运行。给构建作业提供专用 rootless Docker daemon,工作流会检查 daemon 的 rootless 标志。镜像仓库推送和生产切换需要单独接入。
使用现网配置
生产机运行 Compose v2。复制 /home/autolibrary/config.json 到独立文件,将 frontend.static.path 设置为 ./frontend/dist。数据库路径使用 ./backend/data/ 下的现有相对路径。保留前端端口 3003、后端端口 8080 和 Casdoor 地址 http://127.0.0.1:8000。Compose 使用 Linux 宿主机网络,让 Nginx 和 Casdoor 继续通过原有地址连接。
从部署机设置以下环境变量。镜像可以用提交 SHA 标签或不可变的镜像摘要引用:
AUTOLIBRARY_IMAGE=autolibrary-web:<提交SHA>
AUTOLIBRARY_CONFIG=/绝对路径/网站容器配置.json
AUTOLIBRARY_DATA_DIR=/home/autolibrary/backend/data
AUTOLIBRARY_LOG_DIR=/home/autolibrary/logs
AUTOLIBRARY_UID=996
AUTOLIBRARY_GID=987
AUTOLIBRARY_HTTP_PORT=3003
配置文件对容器运行身份可读,数据目录及日志目录可写。Compose 会检查挂载源是否存在。
正式切换前,先用独立端口和数据库副本验证容器,并备份数据库和上传文件。切换时停止占用相同端口的 autolibrary-webserver.service,运行 docker compose up -d --wait,然后验证 Nginx 入口、登录及上传。若首次切换失败,停止网站容器,再启动原网站服务。后续发布可将 AUTOLIBRARY_IMAGE 指回上一个镜像,再运行 docker compose up -d --wait。程序回退继续使用同一份持久数据。