问题标签 [jib]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
3909 浏览

java - 即使定义了 mainClass,使用 JIB 构建也会找到多个有效的主类

使用 jib 命令 mvn clean compile jib:build 构建我的服务项目时,出现以下错误:

无法在项目 my-service 上执行目标 com.google.cloud.tools:jib-maven-plugin:1.0.2:build (build-image-and-tag-image):找到多个有效的主类:com.myservice .MyServiceApplication, io.swagger.Swagger2SpringBoot, 也许你应该mainClass 在 jib-maven-plugin 中添加一个配置 -> [帮助 1]

但是我已经为 spring-boot 设置了主要类

它仍然不起作用。

我试图将它添加到 jib 配置中:

它仍然不起作用。强制 jib 忽略其他类并使用 com.myservice.MyServiceApplication 的任何其他方式。

注意: mvn clean install 工作正常,我使用它没有问题,它有一个独立的 spring boot 应用程序。

0 投票
1 回答
330 浏览

java - 清理 docker 镜像版本的版本。星云释放

我有一个管道可以在每次推送到我的 git 存储库中的特定分支时构建一个 Docker 映像。问题是语义版本控制使用“+”字符来指定版本名称中的元数据部分。我需要将此字符替换为图像名称中 Docker 支持的另一个字符。有什么方法可以替换该字符或使用自定义版本名称?

我正在使用 nebula.release 来推断项目版本。

这是错误:

  • 出了什么问题:任务“:jib”执行失败。

    com.google.cloud.tools.jib.image.InvalidImageReferenceException:无效的图像参考:registry.gitlab.com.uy:5005/project/app:1.0.0-rc.1.dev.0+108db18

我在 build.gradle 文件中创建了这个任务,有没有办法重用它?

我可以使用一些帮助。在此先感谢您的时间。

0 投票
2 回答
2029 浏览

java - 带有 jib 的 JRE 版本(Docker)

我正在尝试使用 Google 的Jib 项目Jib Maven Plugin构建 Docker 映像。

我不明白如何指定 JRE 版本。

我知道我可以在插件的 config中进行自定义,例如:

但这对于将要使用的实际 JRE 版本意味着什么?如果我要专门说 JRE 8u172 怎么办?

Jib 项目将其描述为一个特性:

可重现- 使用相同内容重建容器映像始终会生成相同的映像。

因此我假设必须有某种方法来锁定 JRE 版本?

级别:Java 和 Maven 高级,Docker 新手。

0 投票
2 回答
369 浏览

docker - 将 JHipster 6.0.1 推送到 Gitlab 存储库

一切准备就绪后,我意识到JHipster不再有Dockerfile并且打包使用jib. 生成的gitlab-ci.yml有一个 docker-push 阶段,其命令如下:

但它失败了

由于失败了,我尝试像这样在本地运行命令:

但不是尝试连接到 Gitlab 的注册表,而是尝试连接到registry.hub.docker.com

我想知道的是:如何将其设置为连接到 Gitlab 而不是 Docker Hub?

0 投票
1 回答
512 浏览

java - JHipster 6.0.1 docker-compose 部署:Java 堆空间

我有 2 个应用程序。应用程序 1 正在使用 JHipster 5.8.2,我将其部署到具有 2GB RAM 的 Digital Ocean 的水滴中,并将我的图像推送到 gitlab 的注册表后,我运行它docker-compose -f app.yml up(它有_JAVA_OPTIONS=-Xmx512m -Xms256m),一切都在大约 45 秒内运行完美。

App 2 是使用 JHipster 6.0.1 生成的(它实际上是我的 App 1 的升级版)。我为我的 App 2 使用了来自 App 1 的类似 droplet:具有 2GB RAM 的单核,但由于Java Heap Space. 在此之后,我将我的 droplet 更改为 4GB 2 核 droplet 并将我的app.yml配置更改为:_JAVA_OPTIONS=-Xmx3072m -Xms2048m但它仍然因相同的问题而失败,并且在 40 分钟后。

在此错误之后,我尝试在 32GB 的计算机中运行映像,2 1/2 小时后,出现了同样的问题。

这就是我打包 6.0.1 应用程序的方式:

  • /mvnw verify -Pprod -DskipTests
  • ./mvnw jib:build -Dimage=registry.gitlab.com/amatos/project

在我的液滴中:

  • docker-compose -f app.yml up -d

这应该可以,但它永远不会通过线路Web application fully configured,并且在几分钟后(取决于 RAM 的数量),它会失败。

我错过了一个额外的步骤吗?

发现:

经过大量测试后,我发现,通过添加自定义 DTO,我得到了 Java 堆空间问题。

生成的 DTO:

自定义 DTO

自定义 DTO 是Address并扩展了生成的 DTO。生成的 DTO 有几个字段,其中 2 个是districtId (Long)and districtName (String),但我的自定义 DTO 也有district (District). 该类District有一个属性Province,它也有Region,它也有Country。因此,当我检索一个时,Address我还得到了地区、省、地区和国家。

我的自定义资源调用了一个自定义服务,该服务检索我的自定义 DTO 以及该地区和所有其他类。

如果我使用生成的 DTO,我没有问题,但是当我使用我的自定义 DTO 时,应用程序不会运行并且由于 Java 堆空间而失败。

错误日志

我的问题是:

  1. 为什么我只是扩展一个简单的 DTO 就遇到这样的问题?
  2. 我该如何解决这个问题?
0 投票
1 回答
620 浏览

kubernetes - 如何在 skaffold.yml 中命名版本化图像

我有一个多模块 Maven 项目(Spring Boot),我使用 JIB Maven 插件生成 docker 图像,但是我应该如何在脚手架中命名图像?我推送到本地 docker repo 和 Skaffold afaik 不支持模板。建议在 Skaffold 中引用这些图像是什么?

请记住,对于每个模块的单独图像,我需要将它们命名为:

所以别无选择,只能在 pom.xml 中对它们进行参数化。

我现在需要将主机名和端口名放入 skaffold 文件吗?处理这个自动取款机的最佳方法是什么?那么 Kubernetes 部署描述符中的名称呢?

这是 Kubernetes 部署描述符。

图片在这里应该有什么名字???


0 投票
1 回答
496 浏览

gradle - 使用 jib-gradle-plugin 构建多项目 Dropwizard 应用程序

我有一个 gradle 项目,我想使用jib. 该项目包含如下排列的子项目:

请注意, :web 子项目config.yaml在其资源中包含 a。

我让我的 jib 在根 build.gradle 中使用适当的入口点构建了一个 docker 映像,但我不确定如何将:web子项目的资源包含在映像中。

jib在根目录build.gradle下的任务如下:

我已经尝试在容器的 args 中同时使用两者,但没有$appRoot/config.yaml成功。$appRoot/resources/config.yaml

构建镜像并尝试运行后的错误如下:

0 投票
4 回答
4083 浏览

spring-boot - Kubernetes集群中如何正确配置环境?

我有一个带有两个配置文件 dev 和 prod 的 spring boot 应用程序,我的 docker 文件是:

请不要这样,在构建图像时,我将入口点指定为命令行参数。

这是我使用此映像的 kubernetes 部署的容器部分:

它可以工作,但有一个重大缺陷:我现在如何在不重建映像的情况下切换到生产环境?

最好的办法是在我的 docker 文件中删除该 ENTRYPOINT 并在我的 kubernetes yml 中提供此配置,以便我始终可以使用相同的图像......这可能吗?

编辑:我看到有一个生命周期指令,但请注意我有一个基于弹簧靴执行器的就绪探针。如果我使用这个结构,它总是会失败。

0 投票
1 回答
558 浏览

mysql - 如何构建安装 MySQL 的自定义 Docker 映像并配置 Jib 以将其用作我的 Java 应用程序的基本映像?

Docker新手在这里。我正在尝试在 GCE 上安装使用 Jib 制作的 Java 应用程序的 docker 映像,并将其连接到 CloudSQL。但是,由于 GCE 使 docker 映像使用 Container-Optimized 启动磁盘,当我 SSH 进入实例以尝试将其连接到 MySQL 时,由于“apt-get not found”而无法安装 mysql。

我读到我可以“构建自定义映像并配置 Jib 以将其用作基本映像”以便访问 apt-get,但我似乎找不到任何有关如何执行此操作的资源。

我尝试使用 alpine jdk 路线 + 使用 apk 而不是 apt-get,但有人告诉我不要使用 alpine jdk,因为我以后会遇到问题。

我已经在我的 build.gradle 中设置了这个:

编辑:码头文件:

但我在任何地方都没有 order-routing-helper-image,我只知道我需要那条线。

如果我运行 gradle jib,然后将 GCE 和 SSH 上的新映像挂载到其中,我可以运行“sudo apt-get install mysql-client”。现在我得到“apt-get: not found”。

0 投票
1 回答
648 浏览

spring-boot - Docker 化 Spring Boot 应用程序时出现 ClassNotFoundException

我用 Jib 对接了一个 Spring Boot 应用程序。当我运行 docker 映像时,我收到此错误。

但是,当我运行时,java -jar application.jar一切正常。

这里可能缺少什么?