如何在GitHub Action中运行Jib容器化的Java应用
解决GitHub Action中运行Jib容器化Java应用的问题
一、修正私有镜像拉取的配置错误
你的原配置中container字段的凭证结构和缩进有误,正确的私有镜像拉取配置需要将username和password放在credentials节点下,调整后的Job配置如下:
jobs: container-test-job: runs-on: ubuntu-latest container: image: docker.io/apigeneration/github-action-test credentials: username: ${{ github.actor }} password: ${{ secrets.GITHUB_TOKEN }} volumes: - /config:/config - /data:/data steps: # Jib镜像默认已配置入口点,容器启动后会自动执行转换逻辑,若无需额外操作可省略run步骤 - name: 确认转换任务执行 run: echo "容器已自动启动并执行文件转换"
二、两种运行容器的可行方式
方式1:直接用容器作为Job运行环境
Jib构建的镜像默认会设置好ENTRYPOINT和CMD,当你通过container字段指定镜像后,GitHub Action会自动启动容器并执行预设的入口命令,无需手动编写Java启动指令。如果你的转换任务是一次性执行后退出的类型,这种方式最简洁。
方式2:在Ubuntu环境中手动用Docker命令运行
如果需要先完成数据文件准备等前置操作,再启动容器,可以在ubuntu-latest环境下手动操作Docker:
jobs: docker-run-job: runs-on: ubuntu-latest steps: - name: 登录私有镜像仓库 run: echo "${{ secrets.GITHUB_TOKEN }}" | docker login docker.io -u ${{ github.actor }} --password-stdin - name: 启动容器执行转换 run: docker run -v /config:/config -v /data:/data docker.io/apigeneration/github-action-test
三、查看Jib镜像的入口点(用于调试)
如果需要确认Jib设置的具体启动命令,本地执行以下命令即可查看:
docker inspect docker.io/apigeneration/github-action-test | grep -A 10 "Entrypoint"
输出示例:
"Entrypoint": [ "java", "-cp", "/app/resources:/app/classes:/app/libs/*", "com.yourpackage.MainKt" ],
拿到该命令后,也可以在Action的run步骤中手动执行(适用于方式1的容器环境):
steps: - name: 手动启动转换应用 run: java -cp "/app/resources:/app/classes:/app/libs/*" com.yourpackage.MainKt
内容的提问来源于stack exchange,提问作者Martin
相关产品推荐
相关产品推荐

