ast*_*urm 4 go cgo docker distroless
我试图获得一个在 docker 容器内运行的最小示例 go 应用程序。exec /app: no such file or directory但我在运行容器时不断出现。
我检查并仔细检查了构建和复制应用程序数据的图像中的所有路径,甚至使用交互式 shell 查看容器内部以验证我的路径app是否存在,但没有任何效果。
我的 Dockerfile:
# syntax=docker/dockerfile:1
# BUILD-STAGE
FROM golang:1.17-alpine as build
WORKDIR /go/app
COPY . .
RUN go mod download
RUN go build -o /go/bin/app
# RUN-STAGE
FROM gcr.io/distroless/static-debian11
COPY --from=build /go/bin/app .
EXPOSE 8080
CMD ["./app"]
Run Code Online (Sandbox Code Playgroud)
经过几个小时的尝试和错误,我终于尝试添加CGO_ENABLED=0到我的 go build 命令中......并且它起作用了!
我现在的问题是......到底为什么会发生这种情况?当我在隐式启用 CGO 的情况下构建图像时没有出现错误,我什至验证了二进制文件已复制到我的第二阶段!为什么使用CGO构建时运行时说没有这个文件,但禁用CGO构建时可以很容易找到它?
| 归档时间: |
|
| 查看次数: |
3517 次 |
| 最近记录: |