Docker --output in Github Actions

3

我有一个Dockerfile,用于创建一个文件。

Dockerfile

FROM --platform=linux/amd64 amazonlinux:2 AS base

RUN mkdir /output && touch /output/hello.txt

FROM scratch AS export
COPY --from=base /output/hello.txt /

如果我在本地构建Dockerfile

docker build -f Dockerfile --output . .

我在我的文件夹中有我的hello.txt文件,就像预期的那样。但是如果我通过Github Actions做同样的事情,则为

steps:
  - name: Checkout 
    uses: actions/checkout@v2

  - name: Login to Docker Hub
    uses: docker/login-action@v1
    with:
      username: ${{ secrets.DOCKER_HUB_USERNAME }}
      password: ${{ secrets.DOCKER_HUB_ACCESS_TOKEN }}

  - name: Set up Docker Buildx
    uses: docker/setup-buildx-action@v1

  - name: Run
    run: |
      docker build -f Dockerfile --output . .
 
  - name: Check
    run: |
      ls -la

文件不在文件夹中。你知道我怎么通过 GitHub Actions 检索 Dockerfile 的输出吗?

1个回答

3
您正在使用的自定义构建输出功能是由Buildkit后端提供的。要在经典后端上使用Buildkit后端,您可以采取以下措施:
  1. 在运行docker命令时指定DOCKER_BUILDKIT=1
  2. 通过将"features": { "buildkit": true }添加到配置json的根目录中来默认设置它在docker引擎中。
  3. 像您正在尝试的那样使用docker buildx
Github Actions中正在设置Docker buildx,因此只需将docker build替换为docker buildx build即可。
steps:
  - name: Checkout 
    uses: actions/checkout@v2

  - name: Login to Docker Hub
    uses: docker/login-action@v1
    with:
      username: ${{ secrets.DOCKER_HUB_USERNAME }}
      password: ${{ secrets.DOCKER_HUB_ACCESS_TOKEN }}

  - name: Set up Docker Buildx
    uses: docker/setup-buildx-action@v1

  - name: Run Buildx
    run: |
      docker buildx build -f Dockerfile --output . .
 
  - name: Check
    run: |
      ls -la

谢谢!这完美地解决了我的问题。可惜的是,要找到这个主题很困难,我认为它应该得到一定的推广。 - Iker

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接