无法在高山码头集装箱中启动应用程序

时间:2018-05-09 09:57:47

标签: docker alpine

这有点......疯狂吗?

/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

使用多级构建创建了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"]

应用程序显然在PATH中,所有其他东西都来自路径,但我的并不是。我只是不知道这是怎么回事。

1 个答案:

答案 0 :(得分:4)

我遇到了这个问题,结果与依赖关系有关。我的应用程序是用C语言编写的,它有几个动态依赖项。

您可以使用:

ldd /bin/app

检查您的程序是否具有动态依赖关系。如果有,则安装所需的依赖项,问题将得到解决。

或者您可以使用gcc标志将程序编译为静态程序。

记得告诉你如何解决这个问题:)

更新

您还可以参考此链接,其中,程序动态地与网络相关的依赖项。 Go-compiled binary won't run in an alpine docker container on Ubuntu host