Невозможно запустить приложение в контейнере Alpine Docker. - PullRequest
0 голосов
/ 09 мая 2018

Это ... вроде безумно?

/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

образ докера был создан с помощью многоступенчатой ​​сборки:

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"]

Приложение явно находится в ПУТИ, все остальное из пути работает, но мое нет.Я просто не понимаю, как это возможно.

1 Ответ

0 голосов
/ 09 мая 2018

Я столкнулся с этой проблемой, которая, как оказалось, связана с зависимостями. Мое приложение было написано на C и имеет несколько динамических зависимостей.

Вы можете использовать:

ldd /bin/app

чтобы проверить, есть ли у вашей программы динамические зависимости. Если это так, то установите необходимые зависимости, и проблема будет решена.

Или вы можете использовать флаги gcc для компиляции вашей программы как статической программы.

Не забудьте рассказать, как вы решили эту проблему:)

Обновление

Вы также можете обратиться к этой ссылке, в которой программа динамически выровнена с сетевыми зависимостями. Двоичный код, скомпилированный в Go, не будет работать в док-контейнере Alpine на хосте Ubuntu

...