对于构建当前项目的图像,我使用渐变任务bootBuildImage
。此任务使用Cloud Native Buildpacks创建OCI映像。
- name: Build image with Gradle
run: ./gradlew bootBuildImage
下一步,我将尝试使用构建推送操作将这个docker映像推送到我的私人GitHub注册表中。
- name: Push image to Registry
uses: docker/build-push-action@v1
with:
username: ${{ secrets.DOCKER_USERNAME }}
password: ${{ secrets.DOCKER_PASSWORD }}
registry: docker.pkg.github.com
repository: sullrich84/wettkampfdb-backend
tags: latest
env:
DOCKER_USERNAME: ${{ secrets.DOCKER_USERNAME }}
DOCKER_PASSWORD: ${{ secrets.DOCKER_PASSWORD }}
从日志中可以看出,这个步骤的问题是它似乎依赖于位于工作区根目录中的Dockerfile
,而该目录并不存在。
unable to prepare context: unable to evaluate symlinks in Dockerfile path:
lstat /github/workspace/Dockerfile: no such file or directory
是否可以在不使用/创建专用Dockerfile
的情况下将通过bootBuildImage
创建的映像推送到我的私人GitHub注册表?
如果您只是在寻找处理docker push
的方法,您只需使用本机docker
命令即可。
像这样的东西。
- name: run docker push
run: |
@docker login -u $DOCKER_USERNAME -p $DOCKER_PASSWORD
@docker push $BUILD_TAG
@docker push $LATEST_TAG
env:
DOCKER_USERNAME: ${{ secrets.DOCKER_USERNAME }}
DOCKER_PASSWORD: ${{ secrets.DOCKER_PASSWORD }}
您使用的github操作不是用于推送由repository
和tag
定义的图像,而是用于推送build and push
https://github.com/docker/build-push-action#build-推式
构建并推送Docker映像,并在需要时登录Docker注册表。
具体而言,这也与https://github.com/docker/build-push-action/issues/17-因此,不推就建是可能的,反之亦然。
这个github操作还不允许只进行推送。
目前,这对于许多CI/CD解决方案来说非常常见,其中构建和推送是一项任务。
我使用gradle bootBuildImage的publishRegistry选项
在build.gradle(下面是gradle.kts(中设置参数
tasks.bootBuildImage {
imageName = "${imageName}:${project.version}"
isPublish = true
docker {
publishRegistry {
url = dockerUrl
username = dockerUsername
password = dockerPassword
}
}
}
检查这份文件