Получение исполняемого файла, не найденного в $PATH: неизвестное сообщение об ошибке

#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:

Ответ №3:

Вы получаете эту ошибку, поскольку файл «main.go» недоступен в рабочем каталоге, где выполняется команда «go run main.go».

Пожалуйста, проверьте, доступен файл main.go или нет, если да, то, пожалуйста, укажите полный путь к файлу main.go и попробуйте.