/actions-docker-extract

:octocat: Extract file(s) from a Docker Image

Primary LanguageJavaScriptMIT LicenseMIT

Docker Extract

A GitHub Action for extracting files from a Docker Image.

- uses: shrink/actions-docker-extract@v1
  with:
    image: 'ghost:alpine'
    path: '/var/lib/ghost/current/core/built/assets/.'

Inputs

All inputs are required.

ID Description 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/.

📎 To copy the contents of a directory the path must end with /. otherwise the directory itself will be copied. More information about the specific rules can be found via the docker cp documentation.

Outputs

ID Description Example
destination Destination path containing the extracted file(s) .extracted-1598717412/

Examples

Build, Extract

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@v2
      - name: Build Docker Image
        uses: docker/build-push-action@v1
        with:
          repository: my-example-image
          tags: latest
      - uses: shrink/actions-docker-extract@v1
        id: extract
        with:
          image: my-example-image
          path: /app/.
      - name: Upload Dist
        uses: actions/upload-artifact@v2
        with:
          path: ${{ steps.extract.outputs.destination }}
          name: dist

Login, Pull, Extract

Using 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@v2
      - name: Login to GitHub Container Registry
        uses: docker/login-action@v1
        with:
          registry: ghcr.io
          username: ${{ github.repository_owner }}
          password: ${{ secrets.GHCR_PAT }}
      - uses: shrink/actions-docker-extract@v1
        id: extract
        with:
          image: ghcr.io/${{ github.repository }}:latest
          path: /app/.
      - name: Upload Dist
        uses: actions/upload-artifact@v2
        with:
          path: ${{ steps.extract.outputs.destination }}
          name: dist