我正在使用这样的二进制文件构建一个容器:
基本上,容器将运行一个可执行的 go 程序。
FROM myrepo/ubi8/go-toolset:latest AS build
COPY --chown=1001:0 . /build
RUN cd /build && \
go env -w GO111MODULE=auto && \
go build
#---------------------------------------------------------------
FROM myrepo/ubi8/ubi-minimal:latest AS runtime
RUN microdnf update -y --nodocs && microdnf clean all && \
microdnf install go -y && \
microdnf install cronie -y && \
groupadd -g 1000 usercontainer && adduser -u 1000 -g usercontainer usercontainer && chmod 755 /home/usercontainer && \
microdnf clean all
ENV XDG_CACHE_HOME=/home/usercontainer/.cache
COPY executable.go /tmp/executable.go
RUN chmod 0555 /tmp/executable.go
USER usercontainer
WORKDIR /home/usercontainer
但是,在 Jenkins 中运行容器时出现此错误:
failed to initialize build cache at /.cache/go-build: mkdir /.cache: permission denied
在 kubernetes 部署中手动运行容器时,我没有遇到任何问题,但 Jenkins 抛出此错误,我可以在 CrashLoopBackOff 中看到 pod,容器显示之前的权限问题。
另外,我不确定我是否正确构建了容器。也许我需要在二进制文件中包含可执行的 go 程序,然后再创建运行时?
任何明确的例子将不胜感激。
慕姐8265434
相关分类