在我的项目中,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 [...]
.
我在我的GCP Bucket中检查了gcloud submit(.)中指定的源已成功上载,因此应可在中访问/工作区/。
但构建失败,出现以下错误:
无法准备上下文:无法评估Dockerfile路径中的符号链接:lstat/workspace/:没有这样的文件或目录
他似乎不想使用--file参数中指定的Dockerfile。我找不到cloudbuild的例子。yaml使用了这个论点。知道发生了什么吗?
如果您的文件结构是准确的,那么可能是因为您错误地引用了Dockerfile路径。
健全性检查是首先在本地运行docker build
:
PROJECT_ID="..."
_IMAGE_NAME="app1"
_STAGE="dev"
docker build \
--tag=gcr.io/$PROJECT_ID/${_IMAGE_NAME}:${_STAGE} \
--file=./Dockerfiles/${_IMAGE_NAME}/Dockerfile \
.
以下是我的作品:
.
├── cloudbuild.yaml
├── Dockerfiles
│ └── app1
│ └── Dockerfile
└── folder
└── app1
└── greeting.txt
和:
/Dockerfile/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="..."
QUESTION="64972175"
gcloud builds submit . \
--config=./cloudbuild.yaml \
--substitutions=_IMAGE_NAME=app1,_STAGE="dev" \
--project=${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
我的代码看起来像 我的文件如下所示 当我运行程序时,我看到 我怎样才能修好它呢?
问题内容: 我在使用该功能时遇到了麻烦。 我只需要知道SQL查询是否返回零行。 我已经尝试过以下简单的语句: 类型是哪里。上面的代码似乎不起作用。无论是否为空,它将始终打印该消息。 我检查了SQL查询本身,当存在行时它正确返回了非空结果。 关于如何确定查询是否已返回0行的任何想法?我用谷歌搜索,找不到任何答案。 问题答案: ResultSet.getFetchSize()不返回结果数!从这里: 使
我正在用Eclipse Juno、WindowBuilder在Java7 SE上开发我的第一个JDialog,“摆动自动数据库”()。我很想测试自动数据绑定 我只在Eclipse数据绑定GUI的帮助下为类用户提供了一个编辑对话框。 “我的对话框”将打开,其中的文本字段包含来自用户实例的正确初始值。当我修改文本字段文本,然后单击Ok按钮时,我看不到对用户实例的任何更改。这是我的对话代码。。。。。 绑
问题内容: 我有一个Dockerfile,我正在将其安装在一起以安装Vanilla python环境(稍后将在其中安装应用程序)。 构建运行正常,直到最后一行,我得到以下异常: 如果我进入该目录(只是为了测试是否已完成前面的步骤),我可以看到文件按预期存在: 如果我尝试仅运行命令,则会收到与上述相同的“未找到”错误。但是,如果我运行交互式shell会话,则源代码确实可以工作: 我可以从这里运行脚本
我有一个Dockerfile,我将把它放在一起安装一个vanilla python环境(我将在其中安装一个应用程序,但以后再安装)。 构建运行正常,直到最后一行,我得到以下异常: 从Dockerfile运行指令运行shell脚本的最佳方法是什么来解决这个问题(我运行Ubuntu12.04LTS的默认基本映像)。
问题内容: 我只是在阅读这个问题,想尝试使用别名方法,而不是使用功能包装器方法,但是我似乎无法使其在Firefox 3或3.5beta4或GoogleChrome中在调试窗口和在测试网页中。 萤火虫: 如果将其放在网页中,则对myAlias的调用给我这个错误: Chrome(为清楚起见,插入了>>>): 在测试页中,我得到了相同的“非法调用”。 难道我做错了什么?有人可以复制吗? 另外,奇怪的是,