#docker #go #dockerfile
#docker #Вперед #dockerfile
Вопрос:
Я получаю исполняемый файл, не найденный в $PATH: неизвестная ошибка при попытке запустить docker-образ проекта golang. Ниже приведен мой файл docker.
FROM golang:latest
LABEL maintainer = "Nisal Perera <xxx@sss.com>"
RUN mkdir -p /go/src/github.com/user/app/
COPY . /go/src/github.com/user/app/
WORKDIR /go/src/github.com/user/app/
RUN go get -u github.com/golang/dep/cmd/dep
#RUN dep init
RUN dep ensure
RUN go build
CMD ["go run main.go"]
Ошибка, которую я получаю, заключается в следующем
docker: Error response from daemon: OCI runtime create failed: container_linux.go:370: starting container process caused: exec: "go run main.go": executable file not found in $PATH: un
known.
Пожалуйста, помогите мне с этим. Спасибо
Комментарии:
1. 1. Никогда, никогда, НИКОГДА не используйте
go run main.go
. 2. Ваши аргументыCMD
должны быть массивом, а не отдельной строкой.
Ответ №1:
Вам не нужно использовать go run ...
, так как вы ранее запускали go build
, встроенный файл будет назван в честь каталога и выглядит как его app
, попробуйте CMD ["./app"]
Кстати, правильное использование CMD
в вашем случае было бы CMD ["go", "run", "main.go"]
, ошибка, с которой вы столкнулись, связана с CMD
командой, которая предполагает go run main.go
, что это один файл, но это не так.
Ответ №2:
Вы пытаетесь использовать CMD
предложение в его форме exec , поэтому вам нужно разделить команду и ее аргументы. Принятый формат
CMD ["executable","param1","param2"]
Так что ваш будет
CMD ["go", "run", "main.go"]
Ответ №3:
Вы получаете эту ошибку, поскольку файл «main.go» недоступен в рабочем каталоге, где выполняется команда «go run main.go».
Пожалуйста, проверьте, доступен файл main.go или нет, если да, то, пожалуйста, укажите полный путь к файлу main.go и попробуйте.