- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在使用 build-push-action在 Github Actions(使用 buildx)中构建 Docker 镜像并将其推送到 AWS ECR 注册表。在我推送镜像之前(不幸的是,它有几个 GB),我想使用该镜像来运行容器化的 Python 测试。build-push-action
有 docs在这个确切的目标上 - 他们的示例建议构建镜像,将其加载到 Docker,使用 docker run ...
然后推。然而,虽然构建镜像需要 7 分钟(从下载的缓存中),但将其加载到 Docker 还需要 7 分钟 - 所以它使 CI 管道的时间加倍。来自文档的示例:
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v1
- name: Build and export to Docker
uses: docker/build-push-action@v2
with:
context: .
load: true
tags: ${{ env.TEST_TAG }}
- name: Test
run: |
docker run --rm ${{ env.TEST_TAG }}
- name: Build and push
uses: docker/build-push-action@v2
with:
context: .
platforms: linux/amd64,linux/arm64
push: true
tags: user/app:latest
您知道
任何加快/缩短加载时间的方法 或如何运行
docker run
以其他方式在图像上?似乎问题是,对于加载,图像首先导出到 tarball,然后加载到 docker,它没有被任何类型的缓存加速。 (将图像推送到 ECR 并将其拉回 docker 几乎更快。)但是,没有加载,我无法获取图像。
- name: Login to Amazon ECR
id: login-ecr
uses: aws-actions/amazon-ecr-login@v1
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v1
- name: Build Image and Push to ECR
uses: docker/build-push-action@v2
env:
ECR_REGISTRY: ${{ steps.login-ecr.outputs.registry }}
with:
context: .
push: true
build-args: |
build_id=${{ github.sha }}
tags: |
${{ env.ECR_REGISTRY }}/${{ env.ECR_REPOSITORY }}:latest
cache-from: type=registry,ref=${{ env.ECR_REGISTRY }}/${{ env.ECR_REPOSITORY }}:latest
cache-to: type=inline
最佳答案
我的问题部分基于对 BuildX 及其在示例工作流程中的作用的错误假设。 (我认为您必须使用 BuildX 才能在操作中使用 BuildKit,而我们的 Dockerfile 使用了一些 BuildKit 功能)
我在 Docker BuildX image not showing in docker image ls 中找到了部分问题的答案和一个 blog post Multi-arch build and images, the simple way .
通过使用 setup-buildx-action
步骤,BuildKit 构建不会直接加载到 docker 的多平台镜像(因为您需要加载单平台镜像)。我们目前不需要多平台构建,我们更喜欢 CI 的速度。所以删除 setup-buildx-action
从工作流造成的,单平台图像出现在docker images
它可以立即用于运行测试(没有明显的将单平台图像加载到 docker 的时间开销)。
IE。注释掉这一步有助于:
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v1
一旦我们的管道变得更加复杂和冗长,我们可能会再次开始构建多平台镜像,但就目前而言,在运行中节省 6 分钟更有意义。
docker images
快速地。
关于docker - Github 操作 : How to run containerized tests in a docker image built by build-push-action without doubling execution time,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69396004/
我是一名优秀的程序员,十分优秀!