Сборка док-станции kaniko: не удается найти команду
Новичок в kaniko и попытайтесь создать образы докера в хосте докера Ubuntu.
У меня есть местный Dockerfile
а также main.go
приложение
# Dockefile
FROM golang:1.10.3-alpine AS build
ADD . /src
RUN cd /src && go build -o app
FROM alpine
WORKDIR /app
COPY --from=build /src/app /app/
CMD [ "./app" ]
#main.go
package main
import "fmt"
func main() {
fmt.Println("Hello, World!")
}
И в командной строке я бегу
docker run -it -v $(pwd):/usr \
gcr.io/kaniko-project/executor:latest \
--dockerfile=Dockerfile --context=/usr --no-push
К сожалению, я получил ошибку, как показано ниже
...
INFO[0006] Skipping paths under /proc, as it is a whitelisted directory
INFO[0006] Using files from context: [/usr]
INFO[0006] ADD . /src
INFO[0006] Taking snapshot of files...
INFO[0006] RUN cd /src && go build -o app
INFO[0006] cmd: /bin/sh
INFO[0006] args: [-c cd /src && go build -o app]
/bin/sh: go: not found
error building image: error building stage: waiting for process to exit: exit status 127
В чем дело? (версия докера 18.09.0)
1 ответ
Решение
Вам нужно использовать другой путь для контекста в kaniko. Ваша команда для запуска этой сборки должна выглядеть так:
docker run -it -v $(pwd):/context \
gcr.io/kaniko-project/executor:latest \
--dockerfile=Dockerfile --context=/context --no-push
В вашей команде с /usr
в качестве контекста kaniko, где переопределяется этот путь во всех файлах Dockerfiles и в виде golang, go
находится в /usr
путь, поэтому он не мог найти его тогда
# which go
/usr/local/go/bin/go