Ошибка разрешения пути к файлу dockerfile: укажите правильный путь к файлу Dockerfile в контексте сборки с помощью --dockerfile
apiVersion: v1
kind: Pod
metadata:
name: kaniko
spec:
containers:
- name: kaniko
image: gcr.io/kaniko-project/executor:latest
args:
- "--context=dir:///workspace"
- "--dockerfile=/workspace/Dockerfile"
- "--destination=gcr.io/kubernetsjenkins/jenkinsondoc:latest"
volumeMounts:
- name: kaniko-secret
mountPath: /secret
- name: context
mountPath: /workspace
env:
- name: GOOGLE_APPLICATION_CREDENTIALS
value: /secret/kaniko-secret.json
restartPolicy: Never
volumes:
- name: kaniko-secret
secret:
secretName: kaniko-secret
- name: context
hostPath:
path: /home/sabadsulla/kanikodir
Я запускаю kaniko на капсуле kubernetes для создания образа докера и отправки в GCR.
Когда я использую облачное хранилище Google для CONTEXT_PATH, оно работает нормально, но мне нужно использовать Local_directory(имеется в виду использование общих томов модулей), так как CONTEXT_PATH выдает ошибку
"Error: error resolving dockerfile path: please provide a valid path to a Dockerfile within the build context with --dockerfile
Использование:
I tried with args "--context=/workspace" , "--context=dir://workspace" , it gives the same error
2 ответа
Папка выглядит
В хосте:
/home/sabadsulla/kanikodir/Dockerfile
Когда он превращается в PV/PVC, в контейнере
/workspace/Dockerfile
Тогда для kanino executor
, если мы сопоставим контекст с workspace
, dockerfile будет связан с контекстом Dockerfile
, так
--context=/workspace
--dockerfile=Dockerfile
Привет , я только что решил эту проблему.
мое имя узла: m1.env.lab.io
my Dockerfile path: /root/kaniko/demo1/Dockerfile
FROM ubuntu
ENTRYPOINT ["/bin/bash", "-c", "echo hello"]
pod.yaml в /root/kaniko/demo1/pod.yaml:
apiVersion: v1
kind: Pod
metadata:
name: kaniko
namespace: kaniko
spec:
nodeName: m1.env.lab.io
containers:
- name: kaniko
image: gcr.io/kaniko-project/executor:latest
args: ["--verbosity=trace",
"--log-format=color",
"--dockerfile=Dockerfile",
"--context=dir:///workspace/",
"--destination=registry.local/cloud2go/kaniko-ubuntu:v0.1"] # no account and password for my registry.
volumeMounts:
- name: dockerfile-storage
mountPath: /workspace/
restartPolicy: Never
volumes:
- name: dockerfile-storage
hostPath:
path: /root/kaniko/demo1
Используя контейнер kaniko и объем, установленный как постоянное требование объема.
Пожалуйста, попробуйте и используйте"--dockerfile =./Dockerfile"
containers:
- name: kaniko
image: gcr.io/kaniko-project/executor:latest
args: ["--dockerfile=./Dockerfile",
"--context=/workspace/",
"--destination=gcr.io/kubernetsjenkins/jenkinsondoc:latest"]
volumeMounts:
- name: kaniko-secret
mountPath: /secret
- name: context
mountPath: /workspace/
Используя значения по умолчанию:
--dockerfile string -Path к создаваемому докер-файлу. (по умолчанию "Dockerfile")
--context string -Path к контексту сборки файла Dockerfile. (по умолчанию "/workspace/")
Даже это одно утверждение работает:args: ["--destination=gcr.io/kubernetsjenkins/jenkinsondoc:latest"]
Надеюсь, это поможет. Не могли бы вы проверить это и поделиться с результатами?