This commit is contained in:
+14
-14
@@ -37,13 +37,13 @@ COPY go.mod go.sum ./
|
||||
RUN --mount=type=cache,target=/go/pkg/mod go mod download
|
||||
COPY . .
|
||||
COPY --from=version /VERSION ./VERSION
|
||||
# 先交叉编译 fonu-agent 到 embed 目录(替换仓库中的占位文件),主程序构建时自动内嵌
|
||||
RUN --mount=type=cache,target=/go/pkg/mod --mount=type=cache,target=/root/.cache/go-build CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -trimpath -o internal/frp/agentbin/fonu-agent-linux-amd64 ./cmd/fonu-agent \
|
||||
&& CGO_ENABLED=0 GOOS=linux GOARCH=arm64 go build -trimpath -o internal/frp/agentbin/fonu-agent-linux-arm64 ./cmd/fonu-agent
|
||||
COPY --from=web-builder /src/web/dist ./cmd/fonu/web/dist
|
||||
# 先交叉编译 havline-agent 到 embed 目录(替换仓库中的占位文件),主程序构建时自动内嵌
|
||||
RUN --mount=type=cache,target=/go/pkg/mod --mount=type=cache,target=/root/.cache/go-build CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -trimpath -o internal/frp/agentbin/havline-agent-linux-amd64 ./cmd/havline-agent \
|
||||
&& CGO_ENABLED=0 GOOS=linux GOARCH=arm64 go build -trimpath -o internal/frp/agentbin/havline-agent-linux-arm64 ./cmd/havline-agent
|
||||
COPY --from=web-builder /src/web/dist ./cmd/havline/web/dist
|
||||
RUN --mount=type=cache,target=/go/pkg/mod --mount=type=cache,target=/root/.cache/go-build CGO_ENABLED=0 GOOS=linux GOARCH=${TARGETARCH} go build \
|
||||
-ldflags "-X github.com/fonu/fonu/internal/version.Version=$(cat /src/VERSION | tr -d ' \t\n\r')" \
|
||||
-o /fonu ./cmd/fonu
|
||||
-ldflags "-X github.com/havline/havline/internal/version.Version=$(cat /src/VERSION | tr -d ' \t\n\r')" \
|
||||
-o /havline ./cmd/havline
|
||||
|
||||
# 一键升级 sidecar:独立容器持有 Docker Socket,主程序只通过共享 Unix Socket 调用它
|
||||
FROM --platform=$BUILDPLATFORM ${GO_IMAGE} AS updater-builder
|
||||
@@ -55,13 +55,13 @@ COPY go.mod go.sum ./
|
||||
RUN --mount=type=cache,target=/go/pkg/mod go mod download
|
||||
COPY cmd ./cmd
|
||||
COPY internal ./internal
|
||||
RUN --mount=type=cache,target=/go/pkg/mod --mount=type=cache,target=/root/.cache/go-build CGO_ENABLED=0 GOOS=linux GOARCH=${TARGETARCH} go build -trimpath -o /fonu-updater ./cmd/fonu-updater
|
||||
RUN --mount=type=cache,target=/go/pkg/mod --mount=type=cache,target=/root/.cache/go-build CGO_ENABLED=0 GOOS=linux GOARCH=${TARGETARCH} go build -trimpath -o /havline-updater ./cmd/havline-updater
|
||||
|
||||
# updater 运行时:Docker CLI / Compose 与 Git 只在 sidecar 内可用
|
||||
FROM ${UPDATER_IMAGE} AS updater
|
||||
RUN apk add --no-cache git docker-cli-compose docker-cli-buildx ca-certificates
|
||||
COPY --from=updater-builder /fonu-updater /usr/local/bin/fonu-updater
|
||||
ENTRYPOINT ["/usr/local/bin/fonu-updater"]
|
||||
COPY --from=updater-builder /havline-updater /usr/local/bin/havline-updater
|
||||
ENTRYPOINT ["/usr/local/bin/havline-updater"]
|
||||
|
||||
# 运行时 stage
|
||||
FROM ${RUNTIME_IMAGE}
|
||||
@@ -72,18 +72,18 @@ RUN apt-get update \
|
||||
&& rm -rf /var/lib/apt/lists/*
|
||||
|
||||
WORKDIR /app
|
||||
COPY --from=go-builder /fonu /app/fonu
|
||||
COPY --from=go-builder /havline /app/havline
|
||||
COPY --from=go-builder /src/web/assets/image /app/web/assets/image
|
||||
COPY migrations /app/migrations
|
||||
|
||||
# 时区:Go 的 time.Local 取决于 TZ 环境变量,且需要镜像内存在 zoneinfo(故装上 tzdata)
|
||||
ENV TZ=Asia/Shanghai \
|
||||
FONU_DATA_DIR=/data \
|
||||
FONU_LISTEN=:6893 \
|
||||
FONU_NGINX_MIME_TYPES=/etc/nginx/mime.types
|
||||
HAVLINE_DATA_DIR=/data \
|
||||
HAVLINE_LISTEN=:6893 \
|
||||
HAVLINE_NGINX_MIME_TYPES=/etc/nginx/mime.types
|
||||
|
||||
EXPOSE 6893 80 443
|
||||
|
||||
VOLUME ["/data"]
|
||||
|
||||
CMD ["/app/fonu"]
|
||||
CMD ["/app/havline"]
|
||||
|
||||
Reference in New Issue
Block a user