You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.16 17:55:20