Skip to content

Commit

Permalink
docs: copy between registries with buildx
Browse files Browse the repository at this point in the history
Signed-off-by: CrazyMax <[email protected]>
  • Loading branch information
crazy-max committed Oct 7, 2022
1 parent 48888e0 commit 105bf59
Showing 1 changed file with 14 additions and 29 deletions.
43 changes: 14 additions & 29 deletions docs/advanced/copy-between-registries.md
Original file line number Diff line number Diff line change
@@ -1,10 +1,8 @@
# Copy images between registries

Multi-platform images built using buildx can be copied from one registry to another without
changing the image SHA using the [tag-push-action](https://github.com/akhilerm/tag-push-action).

The following workflow will first push the image to dockerhub, run some tests using the images
and then push to quay and ghcr
[Multi-platform images](https://docs.docker.com/build/building/multi-platform/)
built using Buildx can be copied from one registry to another using the
[`imagetools create` command](https://docs.docker.com/engine/reference/commandline/buildx_imagetools_create/):

```yaml
name: ci
Expand All @@ -27,26 +25,19 @@ jobs:
-
name: Set up Docker Buildx
uses: docker/setup-buildx-action@v2
- # quay and ghcr logins for pushing image after testing
name: Login to Quay Registry
-
name: Login to Docker Hub
uses: docker/login-action@v2
with:
registry: quay.io
username: ${{ secrets.QUAY_USERNAME }}
password: ${{ secrets.QUAY_TOKEN }}
username: ${{ secrets.DOCKERHUB_USERNAME }}
password: ${{ secrets.DOCKERHUB_TOKEN }}
-
name: Login to GitHub Container Registry
uses: docker/login-action@v2
with:
registry: ghcr.io
username: ${{ github.repository_owner }}
password: ${{ secrets.GITHUB_TOKEN }}
-
name: Login to DockerHub
uses: docker/login-action@v2
with:
username: ${{ secrets.DOCKERHUB_USERNAME }}
password: ${{ secrets.DOCKERHUB_TOKEN }}
-
name: Build and push
uses: docker/build-push-action@v3
Expand All @@ -57,17 +48,11 @@ jobs:
tags: |
user/app:latest
user/app:1.0.0
- # run tests using image from docker hub
name: Run Tests
run: make tests
- # copy multiplatform image from dockerhub to quay and ghcr
name: Push Image to multiple registries
uses: akhilerm/[email protected]
with:
src: docker.io/user/app:1.0.0
dst: |
quay.io/user/app:latest
quay.io/user/app:1.0.0
ghcr.io/user/app:latest
ghcr.io/user/app:1.0.0
-
name: Push image to GHCR
run: |
docker buildx imagetools create \
--tag ghcr.io/user/app:latest \
--tag ghcr.io/user/app:1.0.0 \
user/app:latest
```

0 comments on commit 105bf59

Please sign in to comment.