A GitHub Action for extracting files from a Docker Image.
- uses: shrink/actions-docker-extract@v3
  with:
    image: "ghost:alpine"
    path: "/var/lib/ghost/current/core/built/assets/."| ID | Description | Required | Examples | 
|---|---|---|---|
image | 
Docker Image to extract files from | ✅ | alpine ghcr.io/github/super-linter:latest | 
path | 
Path (from root) to a file or directory within Image | ✅ | files/example.txt files files/. | 
destination | 
Destination path for the extracted files | ❌ | /foo/ ~/ ./foo/bar | 
shell | 
The shell to use for extraction | ❌ | /bin/bash /bin/sh | 
📎 To copy the contents of a directory the
pathmust end with/.otherwise the directory itself will be copied. More information about the specific rules can be found via the docker cp documentation.
| ID | Description | Example | 
|---|---|---|
destination | 
Destination path containing the extracted file(s) | extracted-1598717412/ | 
Using docker/build-push-action to build a Docker
Image and then extract the contents of the /app directory within the newly
built image to upload as a dist artifact.
jobs:
  build:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - name: Build Docker Image
        uses: docker/build-push-action@v5
        with:
          tags: my-example-image:latest
          load: true
      - uses: shrink/actions-docker-extract@v3
        id: extract
        with:
          image: my-example-image:latest
          path: /app/.
          destination: dist
      - name: Upload Dist
        uses: actions/upload-artifact@v3
        with:
          path: distUsing docker/login-action to authenticate with the GitHub Container Registry to extract from a published Docker Image.
jobs:
  extract:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - name: Login to GitHub Container Registry
        uses: docker/login-action@v2
        with:
          registry: "ghcr.io"
          username: "${{ github.actor }}"
          password: "${{ secrets.GITHUB_TOKEN }}"
      - uses: shrink/actions-docker-extract@v3
        id: extract
        with:
          image: ghcr.io/${{ github.repository }}:latest
          path: /app/.
          destination: dist
      - name: Upload Dist
        uses: actions/upload-artifact@v3
        with:
          path: distA Workflow packages the Action automatically when a collaborator created a new tag. Any reference to this Action in a Workflow must use a tag (mutable) or the commit hash of a tag (immutable).
✅ uses: shrink/actions-docker-extract@v3
✅ uses: shrink/[email protected]
✅ uses: shrink/actions-docker-extract@40400b42f4f8b663c647f535e2c6674658e39fc6
❌ uses: shrink/actions-docker-extract@mainThe blog post Package GitHub Actions automatically with GitHub Actions describes how this is achieved.