gcloud submit:使用--file参数指定Dockerfile';好像不行
在我的项目中,DockerFile与我要在映像中复制的文件存储在不同的位置。比如:gcloud submit:使用--file参数指定Dockerfile';好像不行,docker,google-cloud-platform,build,dockerfile,gcloud,Docker,Google Cloud Platform,Build,Dockerfile,Gcloud,在我的项目中,DockerFile与我要在映像中复制的文件存储在不同的位置。比如: root Dockerfiles: app_name1: dockerfile1 ... folder app1 app2 ... cloudbuild 我有一个cloudbuild.yaml,类似于: steps: - name: gcr.io/cloud-buil
root
Dockerfiles:
app_name1:
dockerfile1
...
folder
app1
app2
...
cloudbuild
我有一个cloudbuild.yaml,类似于:
steps:
- name: gcr.io/cloud-builders/docker
args:
- build
- '--tag=eu.gcr.io/$PROJECT_ID/${_IMAGE_NAME}:${_STAGE}'
- **'-f ./Dockerfiles/${_IMAGE_NAME}/Dockerfile'**
- .
images: [
'eu.gcr.io/$PROJECT_ID/${_IMAGE_NAME}'
]
gcloud builds submit .
--config=cloudbuild.yaml
--substitutions [...]
.
我从根目录构建图像,如下所示:
steps:
- name: gcr.io/cloud-builders/docker
args:
- build
- '--tag=eu.gcr.io/$PROJECT_ID/${_IMAGE_NAME}:${_STAGE}'
- **'-f ./Dockerfiles/${_IMAGE_NAME}/Dockerfile'**
- .
images: [
'eu.gcr.io/$PROJECT_ID/${_IMAGE_NAME}'
]
gcloud builds submit .
--config=cloudbuild.yaml
--substitutions [...]
.
我在我的GCP Bucket中进行了检查,gcloud submit(.)中指定的源已成功上载,因此应该可以在./workspace/中访问
但生成失败,出现以下错误:
无法准备上下文:无法评估Dockerfile路径中的符号链接:lstat/workspace/:没有这样的文件或目录
似乎他不想使用--file参数中指定的Dockerfile。我无法找到使用此参数的cloudbuild.yaml示例。
知道发生了什么吗?可能是因为,如果您的文件结构是准确的,那么您引用的Dockerfile路径不正确 健全性检查是首先在本地运行
docker build
:
PROJECT_ID=“…”
_IMAGE\u NAME=“app1”
_STAGE=“dev”
码头工人建造\
--tag=gcr.io/$PROJECT\u ID/${{u IMAGE\u NAME}:${{u STAGE}\
--文件=./Dockerfiles/${u IMAGE\u NAME}/Dockerfile\
.
以下是我的作品:
.
├── cloudbuild.yaml
├── Dockerfiles
│ └── app1
│ └── Dockerfile
└── folder
└── app1
└── greeting.txt
以及:
/Dockerfiles/app1/Dockerfile
:
FROM busybox
WORKDIR /tmp
COPY ./folder/app1/greeting.txt ./greeting.txt
ENTRYPOINT ["cat","/tmp/greeting.txt"]
以及:
cloudbuild.yaml
:
steps:
- name: docker
args:
- build
- --tag=gcr.io/$PROJECT_ID/${_IMAGE_NAME}:${_STAGE}
- --file=./Dockerfiles/${_IMAGE_NAME}/Dockerfile
- .
images:
- gcr.io/$PROJECT_ID/${_IMAGE_NAME}
以及:
PROJECT=“…”
问题=“64972175”
gcloud构建提交\
--config=./cloudbuild.yaml\
--替换=\u IMAGE\u NAME=app1,\u STAGE=“dev”\
--项目=${project}
收益率:
BUILD
Pulling image: docker
Using default tag: latest
latest: Pulling from library/docker
Digest: sha256:9170b902404a630a982a2a6473442d3e2cc2342b66345f7a9cf148f8affcf5d3
Status: Downloaded newer image for docker:latest
docker.io/library/docker:latest
Sending build context to Docker daemon 6.144kB
Step 1/4 : FROM busybox
latest: Pulling from library/busybox
Digest: sha256:a9286defaba7b3a519d585ba0e37d0b2cbee74ebfe590960b0b1d6a5e97d1e1d
Status: Downloaded newer image for busybox:latest
---> f0b02e9d092d
Step 2/4 : WORKDIR /tmp
---> Running in 6ffe8d2b3f56
Removing intermediate container 6ffe8d2b3f56
---> 51dcdc2e141a
Step 3/4 : COPY ./folder/app1/greeting.txt ./greeting.txt
---> 7459813216f3
Step 4/4 : ENTRYPOINT ["cat","/tmp/greeting.txt"]
---> Running in 25362a24391b
Removing intermediate container 25362a24391b
---> 398b1f4a60e2
Successfully built 398b1f4a60e2
Successfully tagged gcr.io/[[PROJECT]]/app1:dev
PUSH
Pushing gcr.io/[[PROJECT]]/app1
The push refers to repository [gcr.io/[[PROJECT]]/app1]
8b5d68988e85: Preparing
d2421964bad1: Preparing
d2421964bad1: Layer already exists
8b5d68988e85: Pushed
dev: digest: sha256:d33bd458b8df930fc3338110f8369743ac74068b8a527c5f59958ee1ce1182ff size: 734
DONE
在搜索错误消息的含义时,我可以看到图像创建过程试图查找Dockerfile,因为它是用于构建图像的基于上下文的,但无法这样做。有关错误消息的更多信息,您可以将此Stackoverflow链接视为。是的,但是使用-f参数应该可以避免此问题。我在本地测试了它,效果很好。谢谢你的详细介绍!我知道为什么它不起作用。。。在cloudbuild.yaml中,我写了:
-f path
当我应该写“-f=path”时。愚蠢的错误…不客气。您应该能够使用短标志(-f value
)或长标志(--file=value
)。很高兴看到你的工作。云构建是一项非常出色的服务。