nmi*_*nic 1 docker alpine-linux
这……有点疯狂?
/bin # echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
/bin # ./app
sh: ./app: not found
/bin # ls -lha | grep app
-rwxr-xr-x 1 root root 48.3M May 9 09:48 app
/bin # pwd
/bin
/bin # app
sh: app: not found
Run Code Online (Sandbox Code Playgroud)
docker 镜像是使用多阶段构建创建的:
FROM golang AS builder
WORKDIR /go/src/github.com/nmiculinic/app/
RUN go get -u github.com/golang/dep/cmd/dep
COPY Gopkg.lock Gopkg.toml ./
RUN dep ensure -vendor-only
COPY . .
RUN GOOS=linux go install ./cmd/app
FROM alpine:latest
RUN apk --no-cache add ca-certificates && update-ca-certificates
COPY --from=builder /go/bin/ /bin
COPY config /etc/app/
ENTRYPOINT ["/bin/app"]
Run Code Online (Sandbox Code Playgroud)
该应用程序显然在路径中,路径中的所有其他内容都有效,但我的却没有。我只是不明白这怎么可能。
我遇到了这个问题,结果证明与依赖项有关。我的应用程序是用 C 编写的,它有几个动态依赖项。
您可以使用:
ldd /bin/app
Run Code Online (Sandbox Code Playgroud)
检查您的程序是否具有动态依赖项。如果有,则安装所需的依赖项,问题将得到解决。
或者您可以使用 gcc 标志将您的程序编译为静态程序。
记得告诉你你是如何解决这个问题的:)
也可以参考这个链接,其中,程序动态排列了网络相关的依赖。 Go 编译的二进制文件不会在 Ubuntu 主机上的 alpine docker 容器中运行
| 归档时间: |
|
| 查看次数: |
1779 次 |
| 最近记录: |