mirror of
https://github.com/Syngnat/GoNavi.git
synced 2026-07-13 00:13:33 +08:00
- 新增 Dockerfile.web-server:前端构建 + 纯 Go 主程序 web-server 模式 - 提供 Compose/env 示例与本地源码构建 override - CI 增加 gonavi-web-server 镜像构建、冒烟与 GHCR 发布 - 文档补充 Web 容器部署、数据卷与安全暴露说明
58 lines
1.7 KiB
Docker
58 lines
1.7 KiB
Docker
# syntax=docker/dockerfile:1.7
|
||
#
|
||
# GoNavi Web Server(浏览器访问版)镜像。
|
||
# 复用主程序 web-server 模式 + 嵌入 frontend/dist,不依赖桌面 WebView/CGO。
|
||
|
||
FROM --platform=$BUILDPLATFORM node:20-bookworm AS frontend
|
||
|
||
WORKDIR /frontend
|
||
COPY frontend/package.json frontend/package-lock.json ./
|
||
RUN npm ci --no-audit --no-fund
|
||
COPY frontend/ ./
|
||
# wailsjs 绑定已入库;容器内只构建静态前端
|
||
RUN npm run build
|
||
|
||
FROM --platform=$BUILDPLATFORM golang:1.25-bookworm AS builder
|
||
|
||
ARG TARGETOS
|
||
ARG TARGETARCH
|
||
|
||
WORKDIR /src
|
||
|
||
COPY go.mod go.sum ./
|
||
COPY third_party/highgo-pq/go.mod ./third_party/highgo-pq/go.mod
|
||
COPY third_party/go-irisnative/go.mod third_party/go-irisnative/go.sum ./third_party/go-irisnative/
|
||
RUN go mod download
|
||
|
||
COPY . .
|
||
COPY --from=frontend /frontend/dist ./frontend/dist
|
||
|
||
# 纯 Go 构建主程序(web-server 模式不需要 Wails WebView / CGO)
|
||
RUN CGO_ENABLED=0 GOOS=${TARGETOS} GOARCH=${TARGETARCH} \
|
||
go build -trimpath -ldflags="-s -w" -o /out/gonavi .
|
||
|
||
FROM debian:bookworm-slim
|
||
|
||
RUN apt-get update \
|
||
&& apt-get install -y --no-install-recommends ca-certificates tzdata curl \
|
||
&& rm -rf /var/lib/apt/lists/* \
|
||
&& useradd --system --create-home --home-dir /var/lib/gonavi --uid 10001 gonavi \
|
||
&& mkdir -p /data /var/lib/gonavi/logs \
|
||
&& chown -R gonavi:gonavi /data /var/lib/gonavi
|
||
|
||
COPY --from=builder /out/gonavi /usr/local/bin/gonavi
|
||
|
||
ENV HOME=/var/lib/gonavi \
|
||
GONAVI_DATA_ROOT=/data \
|
||
GONAVI_LOG_DIR=/var/lib/gonavi/logs \
|
||
GONAVI_WEB_ADDR=0.0.0.0:34116
|
||
|
||
VOLUME ["/data"]
|
||
EXPOSE 34116
|
||
|
||
USER gonavi
|
||
|
||
# 首次访问 /setup 初始化 Web 管理员密码;认证状态落在数据目录 web_auth.json
|
||
ENTRYPOINT ["/usr/local/bin/gonavi"]
|
||
CMD ["web-server"]
|