Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

--mount=type=cache not caching properly? #716

Closed
FireMasterK opened this issue Nov 2, 2022 · 2 comments
Closed

--mount=type=cache not caching properly? #716

FireMasterK opened this issue Nov 2, 2022 · 2 comments

Comments

@FireMasterK
Copy link

Troubleshooting

Before submitting a bug report please read the Troubleshooting doc.

Behaviour

Cache mounts are not caching properly? Apt is not caching packages nor is cargo/rust.

Steps to reproduce this issue

  1. Create a Rust project
  2. Use a Dockerfile with the --mount=type=cache flag in a RUN step - https://github.com/TeamPiped/piped-proxy/blob/main/Dockerfile
  3. https://github.com/TeamPiped/piped-proxy/blob/main/.github/workflows/build-docker.yml
  4. Build it

Expected behaviour

Cache mounts should work, and the application should build in seconds. Locally, this works, however not when pushing to GitHub and building with actions.

Actual behaviour

A full build occurs as if there was no cache present.

Configuration

name: Docker Multi-Architecture Build

on:
  push:
    paths-ignore:
      - "**.md"
    branches:
      - main

jobs:
  build-docker-image:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v3
      - name: Set up QEMU
        uses: docker/setup-qemu-action@v2
        with:
          platforms: all
      - name: Set up Docker BuildX
        uses: docker/setup-buildx-action@v2
        with:
          config: .github/buildkitd.toml
          version: latest
      - name: Cache Docker layers
        uses: actions/cache@v3
        with:
          path: /tmp/.buildx-cache
          key: ${{ runner.os }}-buildx-${{ github.sha }}
          restore-keys: |
            ${{ runner.os }}-buildx-
      - name: Login to DockerHub
        uses: docker/login-action@v2
        with:
          username: ${{ secrets.DOCKER_USERNAME }}
          password: ${{ secrets.DOCKER_PASSWORD }}
      - name: Build and push
        uses: docker/build-push-action@v3
        with:
          context: .
          file: ./Dockerfile
          platforms: linux/amd64,linux/arm64
          push: true
          tags: 1337kavin/piped-proxy:latest
          cache-from: type=local,src=/tmp/.buildx-cache
          cache-to: type=local,dest=/tmp/.buildx-cache-new,mode=max
      - name: Move cache
        run: |
          rm -rf /tmp/.buildx-cache
          mv /tmp/.buildx-cache-new /tmp/.buildx-cache

Logs

https://github.com/TeamPiped/piped-proxy/actions/runs/3380229005/jobs/5612778643
https://github.com/TeamPiped/sponsorblock-mirror/actions/runs/3319637519/jobs/5485041136

@crazy-max
Copy link
Member

Cache mounts are useful for incremental builds (local builds) but are not exported atm. This is tracked in moby/buildkit#1512

@JuniorJPDJ
Copy link

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

3 participants