但体验很差,同时在进行多阶段构建也需要如此操作, 如: 在dockerfile中进行:
FROM xxxxx AS build
ADD . /data/build/
WORKDIR /data/build
RUN go mod tidy -compat=1.22 && go mod graph # 这段必然也涉及到对私有仓库进行go get操作,如果不支持,该处也将需要使用单独的git clone后进行replace
RUN CGO_ENABLED=0 GOOS=linux go build -o some_app main.go
FROM docker.cnb.cool/byboat/alpine:gorun-1.0.0
RUN mkdir -p /data/wwwRoot/
COPY --from=build /data/build/some_app /data/wwwRoot/some_app
WORKDIR /data/wwwRoot
这个特性将解决什么问题?
设置仓库为私有(非公开可见)时,https://cnb.cool/test/code_package?go-get=1, 直接返回401,导致go get失败
应该返回静态 HTML,专门放 go-import meta 标签的,不涉及源码访问权限
返回内容如下:(以下内容是示例仓库,但示例仓库为 公开可见)
设想的解决方案?如有
私有仓库对 ?go-get=1 的访问做特殊放行,只返回 meta 标签,代码下载才需认证
您考虑过哪些替代方案?如有
使用 replace 本地替代
手动把依赖仓库 clone 到本地某个路径(比如 ../code.xxxx)
但体验很差,同时在进行多阶段构建也需要如此操作, 如: 在dockerfile中进行:
FROM xxxxx AS build
ADD . /data/build/
WORKDIR /data/build
RUN go mod tidy -compat=1.22 && go mod graph # 这段必然也涉及到对私有仓库进行go get操作,如果不支持,该处也将需要使用单独的git clone后进行replace
RUN CGO_ENABLED=0 GOOS=linux go build -o some_app main.go
FROM docker.cnb.cool/byboat/alpine:gorun-1.0.0
RUN mkdir -p /data/wwwRoot/
COPY --from=build /data/build/some_app /data/wwwRoot/some_app
WORKDIR /data/wwwRoot