问题标签 [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 投票
4 回答
4186 浏览

maven - 使用 JIB 插件对多模块 Spring Boot 应用程序进行 Dockerizing

我有一个 Spring Boot 应用程序并使用 spotify 插件对我的应用程序进行 Docker 化。所以,我将有一个像下面这样的 Dockerfile。

我遇到了 JIB,它看起来真的很酷。但是,努力让它工作。

我在下面添加了 pom 条目。

mvn 编译 jib:build

我看到以下内容。

[INFO] 构建依赖层... [INFO] 构建类层... [INFO] 构建资源层...

当我运行 docker 映像时,它说 Jar 文件不存在。我有一个多模块 maven 项目,并希望在从父 pom 运行 mvn compile jib:build 时对多个模块进行 dockerize。对此有什么帮助吗?

0 投票
0 回答
1396 浏览

docker - 运行 JIB 镜像创建的容器

我正在使用 maven jib 插件来对基于 Spring boot 的应用程序进行 dockerize。

https://github.com/GoogleContainerTools/jib/tree/master/jib-maven-plugin

我使用以下命令在 Kubernetes 中运行。来自 Kubernetes 部署 yaml 文件的片段。

它运行良好。我对使用 docker 运行相同的东西感到困惑。

我尝试了以下命令,但是,它没有选择 applicaiton.properties 文件。我的 application.properties 在 /local/path/config 文件夹下。

docker run IMAGE /bin/bash -c "java -cp /app/libs/*:/app/resources/:/app/classes/ -Xmx2g -Xms2g com.test.Application --spring.config.location=/config /application.properties" -v /local/path/config:/config/

0 投票
2 回答
1787 浏览

spring-boot - 使用 JIB 插件对 Spring Boot 应用程序进行 Dockerizing

我正在使用 maven jib 插件来对基于 Spring boot 的应用程序进行 dockerize。

https://github.com/GoogleContainerTools/jib/tree/master/jib-maven-plugin

我在 JIB 插件中没有 args 或 Entrypoint。我想通过争论来控制它。

运行“mvn clean install”时,我在日志中看到以下行。

我尝试将 --spring.config.location 作为程序参数传递,如下所示。但它没有选择我的 application.properties。我尝试修改起始类名以检查它是否正常工作,但它仍在使用 com.test.Application。看起来,这里没有考虑 -c 。

docker run -v /local/path/config/:/secrets/ IMAGE:1.0 bash "java -cp /app/libs/*:/app/resources/:/app/classes/ -Xmx2g -Xms2g com.test.Application --spring.config.location=/secrets/application.yml"

0 投票
1 回答
103 浏览

java - 如何运行我的 Docker Image 并查看正在运行的应用程序?

我在 Java 中创建了一个示例 Web 应用程序(使用 Gradle 和 SpringBoot),然后使用 Jib 将其 dockerized。在我的 build.gradle 文件中有一行:“ports = ['9090']”,因为我想在这个端口上看到 web-app。在我的 application.properties 文件中有一行:“server.port=9090”。

Docker Image 成功创建。但是当我运行这个图像时,我看不到它的工作结果。如果我运行 jar 文件一切正常。Web 应用程序适用于 9090 端口。

当我执行命令docker run时,我想看到我的网络应用程序正常工作。如何更改图像或其他任何东西(NettyWebServer 属性)的端口以查看我想要的该端口上正在运行的图像?你能帮我解决这个问题吗?谢谢你。

0 投票
1 回答
1264 浏览

maven - 如何使用 Maven Jib 插件使主机文件在容器内可用

我正在使用 Jib 的 Maven 插件构建一个容器。

我有一个/tmp/folder/file.json在我的主机上调用的文件,我需要能够从容器内部读取它。

我尝试/tmp/folder使用卷功能安装:

我认为/tmp/folder可以从容器中访问,但file.json不是。至少当我尝试这个时

什么都没有回来。

我是否正确使用了卷功能?

0 投票
5 回答
5193 浏览

docker - 使用 Jib 和 Gitlab-CI 构建 docker 镜像

我正在尝试创建一个管道,其中使用 JIB(通过 Maven 插件)创建 docker 图像并将其推送到我的 Gitlab 注册表。

当我登录到我的 docker 注册表时,这在本地运行良好。

假设我有一个 .gitlab-ci.yml ,它看起来像:

现在当管道被触发时我得到一个异常

我假设我收到此错误是因为我没有运行 docker login -u [username] -p [password/token]

我怎么会需要一个使用 docker-in-docker 映像的 .gitlab-ci.yml 才能在我的脚本中运行 docker login?

除了使用 docker-in-docker 映像在我的 Gitlab CI 上构建此映像之外,还有其他方法吗?

0 投票
2 回答
536 浏览

docker - JIB docker hub 图像推送失败 com.fasterxml.jackson.core.JsonParseException:意外字符('<'(代码 60)):预期有效值

我正在尝试使用 jib 构建 docker 映像。这里是注册表配置。

当我运行gradle jib给出以下错误消息时。

如何解决此错误消息?

0 投票
1 回答
929 浏览

kubernetes - 将镜像从 Registry Y 拉取、标记和推送到 Registry X

目前,我们的 CI/CD 环境是基于 Kubernetes 的云。由于性能优势,Kubernetes 云提供商最近删除了 docker 守护程序。例如,Google Kubernetes Engine 或 IBM Cloud Kubernetes 仅具有 Containerd 运行时,用于运行但不构建容器映像。

像kanikojib这样的许多工具可以弥补这一差距。它们提供了一种非常有效地构建 docker 映像的方法,而无需 docker 守护程序。

问题来了:

  1. 图像“registry-x.com/repo/app1:v1-snapshot”从 CI 中的 jib 构建到 registry-x。
  2. 然后在某个时间点部署和测试图像“registry-x.com/repo/app1:v1-snapshot”,如果测试成功,则需要将其交付到注册表 Y,并且需要标记为稳定版本在注册表 X 中。

因此图像“registry-x.com/repo/app1:v1-snapshot”需要从“registry-x.com/repo/app1:v1-snapshot”标记为“registry-x.com/web/app1:v1” -release”,然后需要另外标记“registry-y.com/web/app1:v1-release”,并且都需要推送。

结果:开发中的快照映像在两个注册表中都可用,并带有发布标签。

那么如何在没有 docker 守护进程的情况下完成这 3 个简单的操作(Pull、Tag、Push)呢?似乎 kaniko 和 jib 不是办法。

我不想订购 VM 只是为了让 docker 守护程序来执行这些操作。而且我也知道 Jib 能够推送到多个注册表。但它不能只重命名图像。

也与去年的这个问题有关: 将图像从 docker 注册表克隆到另一个

问候,莱昂

0 投票
1 回答
1642 浏览

docker - 在 Distroless Image(Java 应用程序)中添加 SSL 证书

我有一个基于Distroless的 Java 应用程序容器化(docker) ,我想在 JVM 的存储中添加一个 SSL 证书。

我看到一个选项,例如使用 Docker 的RUN命令使用 Java 选项将 SSL 证书导入 JVM 存储keytool,但由于 Distroless 不附带 Shell,我无法使用 RUN 命令。

有没有将 SSL 证书添加到cacerts以 Distroless 作为基本映像的 -Java 的最佳方法?

0 投票
1 回答
1246 浏览

java - 使用 API 模块构建的 Maven 多项目构建似乎不包含构建映像中的项目级依赖项

您好,我有一个构建多个图像的 springboot 多项目 maven 构建。结构类似于:

*launcher 模块是我的 springboot uber jar,网关是 spring mvc 控制器和支持类,而 apis 是启动器模块中的项目级依赖项。例如 project-c 依赖于 project-b-api

我的项目父 pom 有:

注意我已经添加<jib.skip>true</jib.skip>到我的父 pom.xml 中。我已经进入<jib.skip>false</jib.skip>了启动器,这创建了仅从 *launcher 模块创建图像的预期行为。

所有模块的版本都为 0.0.1-SNAPSHOT。

当我使用潜水检查我的图像时,我没有 SNAPSHOT DEPENDENCIES 层,并且我的项目级依赖项似乎不在图像中。

当我运行我的应用程序时,它们似乎启动了 SpringBoot 并在端口上侦听,但控制器的端点没有加载。另一个项目在尝试从项目级依赖项加载类时抛出 NoClassDefFoundError 异常。

我已经尝试在没有 SNAPSHOT 的情况下将所有内容版本化为 0.0.1,并且我的项目级依赖项不包含在我的依赖项层中。

我也尝试过运行mvn -X -DjibSerialize=true clean compile jib:build > logs.txt和我的类级依赖项

请注意,我在此 DEBUG 日志输出中重命名了许多敏感目录等。我不确定第二条和第三条底线(项目级依赖项)是否应该指向 target\classes\ - 他们应该引用 .jars 吗?我想如果我只做一个 mvn compile jib:build 他们不能

我希望我已将其发布在正确的位置。