- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试为我的应用程序构建构建管道,并在使用卷的步骤之间共享特定文件夹。
问题是因为在我的第一步( unit-tests )我必须在 requirements.txt 上安装所有库才能运行我的单元测试。之后,我必须在其他步骤中构建运行我的 Dockerfile 的应用程序。我不想再次重新安装所有要求,所以,我想复制已经安装的要求并将它们粘贴到 docker build 步骤中。我能做到吗?我跟着这个线程并试图复制到我的现实,但我仍然有问题。
Passing files from Google Cloud Container Builder to Docker build task
- id: unit-tests
name: python:3-alpine
entrypoint: sh
dir: my-dir
args:
- -c
- |
apk add --virtual build_dependencies build-base
apk add --no-cache libstdc++
pip install --no-cache-dir -r requirements.txt
apk del build_dependencies
python -m unittest discover --verbose
cp -Rv /usr/local/lib/python3.8/site-packages/* /requirements
volumes:
- name: 'requirements'
path: /requirements
- id: docker-build
name: gcr.io/cloud-builders/docker
dir: my-dir
args:
- build
- --tag=gcr.io/${PROJECT_ID}/eta:test
- '.'
volumes:
- name: 'requirements'
path: /requirements
waitFor: ['unit-tests']
images:
- 'gcr.io/$PROJECT_ID/eta:test'
timeout: 3600s
这是我的 Dockerfile:
from python:3-alpine
RUN set -eux; \
apk add --virtual build_dependencies build-base; \
apk add --no-cache libstdc++; \
apk del build_dependencies;
COPY /requirements/* /usr/local/lib/python3.8/site-packages/
COPY . /app
RUN ["chmod", "+x", "/app/entry.sh"]
WORKDIR /app
ENTRYPOINT [ "/app/entry.sh" ]
我找不到
/要求我的 dockerfile 中的文件夹,这是错误消息:
Step #1 - "docker-build": Step 3/7 : COPY /requirements/* /usr/local/lib/python3.8/site-packages/
Step #1 - "docker-build": COPY failed: no source files were specified
Finished Step #1 - "docker-build"
ERROR
ERROR: build step 1 "gcr.io/cloud-builders/docker" failed: step exited with non-zero status: 1
我不确定我在做什么是正确的方法。
最佳答案
Cloud Build (VM) 仍然存在 /workspace
跨步骤,以便您可以创建例如/workspace/requirements
并使用 requirements
在后续步骤中。
PROJECT=[[YOUR-PROJECT]]
BILLING=[[YOUR-BILLING]]
gcloud projects create ${PROJECT}
gcloud beta billing projects link ${PROJECT} \
--billing-account=${BILLING}
gcloud services enable cloudbuild.googleapis.com \
--project=${PROJECT}
然后:
steps:
- id: also
name: busybox
entrypoint: sh
dir: x
args:
- -c
- |
mkdir -p /workspace/requirements
echo "Hello Freddie" > /workspace/requirements/freddie.txt
- id: after
name: gcr.io/cloud-builders/docker
args:
- build
- --tag=gcr.io/${PROJECT_ID}/test
- .
images:
- gcr.io/${PROJECT_ID}/test
和
Dockerfile
:
FROM busybox
WORKDIR /test
COPY /requirements/* .
RUN ls -la
ENTRYPOINT ["more","/test/freddie.txt"]
和:
gcloud builds submit . \
--config=./cloudbuild.yaml \
--project=${PROJECT}
产量:
BUILD
Starting Step #0 - "also"
Step #0 - "also": Pulling image: busybox
Step #0 - "also": Using default tag: latest
Step #0 - "also": latest: Pulling from library/busybox
Step #0 - "also": Digest: sha256:2ca5e69e
Step #0 - "also": Status: Downloaded newer image for busybox:latest
Step #0 - "also": docker.io/library/busybox:latest
Finished Step #0 - "also"
Starting Step #1 - "after"
Step #1 - "after": Already have image (with digest): gcr.io/cloud-builders/docker
Step #1 - "after": Sending build context to Docker daemon 7.68kB
Step #1 - "after": Step 1/5 : FROM busybox
Step #1 - "after": ---> 6858809bf669
Step #1 - "after": Step 2/5 : WORKDIR /test
Step #1 - "after": ---> Running in 7e075adce9eb
Step #1 - "after": Removing intermediate container 7e075adce9eb
Step #1 - "after": ---> 78f7b2faec16
Step #1 - "after": Step 3/5 : COPY /requirements/* .
Step #1 - "after": ---> 1ec6a35c1deb
Step #1 - "after": Step 4/5 : RUN ls -la
Step #1 - "after": ---> Running in 943ddad6434c
Step #1 - "after": total 12
Step #1 - "after": .
Step #1 - "after": ..
Step #1 - "after": freddie.txt
Step #1 - "after": Removing intermediate container 943ddad6434c
Step #1 - "after": ---> 634072b8aec4
Step #1 - "after": Step 5/5 : ENTRYPOINT ["more","/test/freddie.txt"]
Step #1 - "after": ---> Running in 13c43b5ca924
Step #1 - "after": Removing intermediate container 13c43b5ca924
Step #1 - "after": ---> f0ebfe1e8e33
Step #1 - "after": Successfully built f0ebfe1e8e33
Step #1 - "after": Successfully tagged gcr.io/.../test:latest
Finished Step #1 - "after"
PUSH
使用
volumes
的问题是这些不会在 docker build 的上下文中。因此,如果您更喜欢使用卷,则需要将卷的内容复制到
/workspace
中。 .
gcr.io/cloud-builders/docker
时步骤,
/workspace
以 root 身份挂载,因此您可以访问
/workspace/requirements
如
/requirements
:
steps:
- id: before
name: busybox
entrypoint: sh
dir: x
args:
- -c
- |
echo "Hello Freddie" > /requirements/freddie.txt
volumes:
- name: requirements
path: /requirements
- id: during
name: busybox
entrypoint: sh
dir: x
args:
- -c
- |
more /requirements/freddie.txt
volumes:
- name: requirements
path: /requirements
- id: fix
name: busybox
entrypoint: sh
args:
- -c
- |
ls -la /workspace
ls -la /requirements
mkdir -p /workspace/requirements
cp -r /requirements /workspace/requirements
ls -la /workspace/requirements
volumes:
- name: requirements
path: /requirements
- id: after
name: gcr.io/cloud-builders/docker
args:
- build
- --tag=gcr.io/${PROJECT_ID}/test
- .
images:
- gcr.io/${PROJECT_ID}/test
产量:
BUILD
Starting Step #0 - "before"
Step #0 - "before": Pulling image: busybox
Step #0 - "before": Using default tag: latest
Step #0 - "before": latest: Pulling from library/busybox
Step #0 - "before": Digest: sha256:2ca5e69e
Step #0 - "before": Status: Downloaded newer image for busybox:latest
Step #0 - "before": docker.io/library/busybox:latest
Finished Step #0 - "before"
Starting Step #1 - "during"
Step #1 - "during": Already have image: busybox
Step #1 - "during": Hello Freddie
Finished Step #1 - "during"
Starting Step #2 - "fix"
Step #2 - "fix": Already have image: busybox
Step #2 - "fix": total 24
Step #2 - "fix": .
Step #2 - "fix": ..
Step #2 - "fix": Dockerfile
Step #2 - "fix": cloudbuild.yaml
Step #2 - "fix": requirements
Finished Step #2 - "fix"
Starting Step #3 - "after"
Step #3 - "after": Already have image (with digest): gcr.io/cloud-builders/docker
Step #3 - "after": Sending build context to Docker daemon 8.192kB
Step #3 - "after": Step 1/5 : FROM busybox
Step #3 - "after": ---> 6858809bf669
Step #3 - "after": Step 2/5 : WORKDIR /test
Step #3 - "after": ---> Running in 236aa78f2229
Step #3 - "after": Removing intermediate container 236aa78f2229
Step #3 - "after": ---> cf05164e8175
Step #3 - "after": Step 3/5 : COPY /requirements/* .
Step #3 - "after": ---> f5dee710b4d7
Step #3 - "after": Step 4/5 : RUN ls -la
Step #3 - "after": ---> Running in 8a30309a1536
Step #3 - "after": total 12
Step #3 - "after": .
Step #3 - "after": ..
Step #3 - "after": freddie.txt
Step #3 - "after": Removing intermediate container 8a30309a1536
Step #3 - "after": ---> 20e2e99c3818
Step #3 - "after": Step 5/5 : ENTRYPOINT ["more","/test/freddie.txt"]
Step #3 - "after": ---> Running in cc6a57aaa103
Step #3 - "after": Removing intermediate container cc6a57aaa103
Step #3 - "after": ---> 0a50096e471c
Step #3 - "after": Successfully built 0a50096e471c
Step #3 - "after": Successfully tagged gcr.io/.../test:latest
Finished Step #3 - "after"
PUSH
Pushing gcr.io/.../test
...
DONE
关于python-3.x - 使用 Dockerfile 上的卷的 Google Cloud Build,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64213744/
我正在尝试使用谷歌云构建触发器来构建我的 docker 容器。不幸的是,构建没有找到我的 docker 文件。它不在我的存储库的根目录中,但我认为我可以指定一个相对路径。显然我配置错误了。下面是我的
我可以像这样构建一个 Dockerfile docker build -t deepak/ruby . 但是对于一个不名为Dockerfile的Dockerfile # DOCKER-VERSION
是否可以命名构建阶段?我正在搜索类似以下示例的内容: ARG NAME FROM python:3.7-alpine as modul-${NAME} # ... 如果我尝试这个例子,就会发生这个错误
在我的 Dockerfile 中,我需要使用命令替换来添加一些环境变量。我想设置 ENV PYTHONPATH /usr/local/$(python3 -c 'from distutils impo
以下Dockerfile包含四个COPY层: COPY README.md ./ COPY package.json ./ COPY gulpfile.js ./ COPY __BUILD_NUMBE
我正在尝试从我创建的 Dockerfile 中拉取 tomcat,并使用以下命令拉取 centos: FROM centos RUN docker run -it tomcat 然后现在我正在创建一个
我不确定是否应该为我的 Node.js 应用程序创建不同的 Dockerfile 文件。一种用于没有开发依赖项的生产,另一种用于包含开发依赖项的测试。 或者一个基本上是开发Dockerfile.dev
我拥有的是多个相似且简单的dockerfile 但我想要的是有一个单一的基础 dockerfile 和我的 dockerfile将他们的变量传递给它。 在我的例子中,dockerfile 之间的唯一区
我有一个应用程序有两个 Dockerfile ,说 Dockerfile.foo和 Dockerfile.bar ,预计将为 docker-compose.yml 的两个不同服务生成两个不同的图像.
我是一个 docker maven 插件新手。 如果我理解得很好,根据Spotify's Dockerfile Maven documentation ,应该将 Dockerfile 放在我的项目的根
我正在设置一个docker容器,将在this article之后在nginx服务器上为我的Angular 5应用程序提供服务。 本文提出了这个Dockerfile: # Stage 0, based
大家好, 我是 docker 的新手,我想容器化我的 ASP.NET Core 应用程序,但出现错误,我无法继续构建我的图像 这是我的示例 Dockerfile FROM microsoft/dotn
我想在不使用注册表的情况下链接 Dockerfiles,这可以通过 FROM 实现吗?陈述? 以两个 Dockerfile 为例: Dockerfile /some/other/dir/Dockerf
我尝试在公共(public) dockerhub 上通过我自己的镜像安装 Airflow,但它在本地运行完美,但当我尝试在 Openshift 上使用它时。我在下面收到此错误。 `ERROR: Cou
此 dockerfile 工作正常。但是如何在 dockerfile 中执行命令? FROM alpine RUN apk add --update sqlite && rm -rf /var/cac
当我尝试设置自动构建时,我的 Docker Hub 存储库中的 Dockerfile 为空。如果我触发构建:- Build failed: Dockerfile not found at ./Dock
关闭。这个问题需要details or clarity .它目前不接受答案。 想改进这个问题?通过 editing this post 添加详细信息并澄清问题. 1年前关闭。 Improve this
我目前正在将一个巨大的 DockerFile 拆分为单独的 DockerFile,但是在巨大的 DockerFile 中定义的一些变量需要在单独的 DockerFile 中使用。 Docker 是否有
我有一个 Dockerfile 可以创建我想在这里使用的构建镜像:~/build/Dockerfile 然后我使用一个标准镜像来部署 从 ~/build/Dockerfile 构建的图像没有在任何地方
我运行这个: ➜ frontend git:(master) ✗ docker-compose up Building web ERROR: Cannot locate specified Dock
我是一名优秀的程序员,十分优秀!