"exec: \" go \ ": исполняемый файл не найден в $ PATH" - PullRequest
0 голосов
/ 03 ноября 2018

Я создал dockerfile, успешно скомпилировал его, но при запуске

sudo docker run -d -it -p 15555: 9888 --name = docker-golang-test goTestDocker go run main.go host = 0.0.0.0

возвращает ошибку

docker: Ответ об ошибке от демона: Ошибка создания среды выполнения OCI: container_linux.go: 348: запуск процесса контейнера вызвал "exec: \" go \ ": исполняемый файл не найден в $ PATH": неизвестно.

Это мой файл Docker

FROM golang:1.10.2-alpine3.7 AS build 
RUN apk --no-cache add gcc g++ make ca-certificates
WORKDIR /home/user/Desktop/work/go-work/GoProject/project
RUN ls
RUN pwd
COPY . .
RUN pwd
RUN apk update -qq && apk add git
RUN go get github.com/golang/protobuf/jsonpb
RUN go get github.com/golang/protobuf/proto
FROM alpine:3.7
WORKDIR /usr/bin
COPY --from=build /go/bin .
EXPOSE 9888
CMD ["./app"] --v

1 Ответ

0 голосов
/ 03 ноября 2018
FROM golang:1.10.2-alpine3.7 AS build 
RUN apk --no-cache add gcc g++ make ca-certificates
WORKDIR /go/src/github.com/{$whoami}/testProject
RUN ls
RUN pwd
COPY . .
RUN pwd
RUN apk update -qq && apk add git
RUN go get github.com/golang/protobuf/jsonpb
RUN go get github.com/golang/protobuf/proto
RUN go build .

FROM alpine:3.7
WORKDIR /usr/bin
COPY --from=build /go/src/github.com/{$whoami}/testProject/testProject .
EXPOSE 9888
CMD ["./app"] --v

это многоступенчатый докер-файл, в который вы копируете проект, извлекаете зависимости и собираете его, а затем, во втором, вы просто запускаете его (CMD ["./app"])

если вы хотите сделать это по-своему:

FROM golang:1.10.2-alpine3.7
RUN apk --no-cache add gcc g++ make ca-certificates
WORKDIR /go/src/github.com/{$whoami}/testProject
COPY . .
RUN apk update -qq && apk add git
RUN go get github.com/golang/protobuf/jsonpb
RUN go get github.com/golang/protobuf/proto

- это требуемый докер-файл (мое предложение обычно первое, потому что он запускается только командой docker run)

PS: многоступенчатый докер-файл

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...