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
我正在 kubernetes pod 上运行 kaniko 来构建一个 docker 镜像并推送到 GCR。
当我使用谷歌云存储进行CONTEXT_PATH它工作正常时,但是我需要使用 Local_directory(意味着使用 pod 的共享卷(作为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
文件夹看起来像
在主机中:
/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 in/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 -要构建的 dockerfile 的路径。(默认为"Dockerfile"(
--context 字符串 -dockerfile 构建上下文的路径。(默认"/工作区/"(
甚至这句话也有效:
args: ["--destination=gcr.io/kubernetsjenkins/jenkinsondoc:latest"]
希望这有帮助。您能否对其进行测试并与结果分享?