У меня проблема с многоэтапной сборкой, когда двоичный файл, который создается на первом этапе, правильно копируется на этап 2, но при попытке запустить его исполняемый файл не может быть найден.
dockerfile:
FROM golang as goimage
ENV SRC=/go/src/
RUN mkdir -p /go/src/
WORKDIR /go/src/go_docker
RUN git clone https://github.com/bryonbaker/simple-microservice.git /go/src/go_docker/ \
&& CGO_ENABLED=0 GOOS=linux GOARCH=amd64
RUN go get github.com/gorilla/mux
RUN go build -o bin/go_docker
FROM alpine:latest AS microservice
RUN apk --no-cache add bash
ENV WORK_DIR=/docker/bin
WORKDIR $WORK_DIR
COPY --from=goimage /go/src/go_docker/bin/ ./
# Put a container-image version identifier in the root directory.
ARG VERSION=1.0
RUN echo $VERSION > image_version
EXPOSE 10000
#CMD ["go_docker"]
Результат:
$ docker run -ti -p 80: 10000 go-docker: последняя
/ docker / bin # ls
go_docker image_version
/ docker / bin # ./go_docker / bin / sh: ./go_docker: не найдено
/ docker / bin #
Если я запускаюдвоичный файл из промежуточного контейнера goimage, который создается, тогда он работает нормально.Размеры файлов совпадают ...
ПРИМЕЧАНИЕ. В этом файле docker я закомментировал CMD и тестирую его через оболочку.Если вы раскомментируете CMD, вы получите ту же проблему:
docker run go-docker: последний docker: ответ об ошибке от демона: не удалось создать среду выполнения OCI: container_linux.go: 344: вызван запуск процесса контейнера "exec: \ "go_docker \": исполняемый файл не найден в $ PATH ": неизвестно.ERRO [0001] ошибка ожидания контейнера: контекст отменен
Я сделал тестовый код открытым для git repo, если вы хотите его просмотреть.
Заранее спасибо