сборка док-станции kaniko: не удается найти команду - PullRequest
1 голос
/ 23 апреля 2019

Новичок в 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 Ответ

2 голосов
/ 23 апреля 2019

Вам нужно использовать другой путь для контекста в kaniko.Ваша команда для запуска этой сборки должна выглядеть следующим образом:

docker run -it  -v $(pwd):/context \
   gcr.io/kaniko-project/executor:latest \
   --dockerfile=Dockerfile --context=/context --no-push

В вашей команде с /usr в качестве контекста kaniko, где переопределение этого пути во всех файлах Docker и в образе golang, go находится в /usr путь, поэтому он не может найти его тогда

# which go
/usr/local/go/bin/go
...