gcloud submit:使用--file参数指定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

在我的项目中,DockerFile与我要在映像中复制的文件存储在不同的位置。比如:

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
)。很高兴看到你的工作。云构建是一项非常出色的服务。