我使用jib插件来创建镜像,而docker-compose需要Dockerfile。我如何将 jib 已经制作的图像链接到我的 docker-compose,以便它可以在过程中构建我的后端?
使用jib-maven-plugin
我想构建一个带有多个标签的图像。虽然mvn jib:build
基本上工作正常,但它“仅”用latest
.
我的 Mavenpom.xml
定义如下:
<plugin>
<groupId>com.google.cloud.tools</groupId>
<artifactId>jib-maven-plugin</artifactId>
<version>2.8.0</version>
<configuration>
<to>
<image>my-private-registry.org/my-image</image>
</to>
</configuration>
</plugin>
Run Code Online (Sandbox Code Playgroud)
文档显示可以jib.to.tags
在 XML 中使用来定义标签列表。但是,我想在 Jenkins 管道中运行构建步骤,即我无法对pom.xml
.
运行命令时是否可以传递标签列表mvn
,例如通过设置一些-D
参数?
我有一个基于Distroless的 Java 应用程序容器化(docker),我想在 JVM 的商店中添加一个 SSL 证书。
我看到一个选项,比如使用 Docker 的RUN命令使用 Javakeytool
选项将 SSL 证书导入到 JVM 存储中,但是由于 Distroless 没有附带 Shell,我无法使用 RUN 命令。
是否有将 SSL 证书添加到cacerts
-Java 并使用 Distroless 作为基本映像的最佳方法?
我正在尝试在 kubernetes 部署描述符中指定一个挂载点,为此我需要有一个目录
volumeMounts:
- name: volume-mount
mountPath: /dev/bus/usb/003/005
Run Code Online (Sandbox Code Playgroud)
对应于:
volumes:
- name: my-host-volume
hostPath:
path: /dev/bus/usb/003/005
Run Code Online (Sandbox Code Playgroud)
我如何使用jib创建这个?
我需要创建一个基于 Ubuntu 的自定义映像,其中包含我需要使用 apt 安装的软件。例如:
sudo apt-get install pcscd
sudo apt-get install pcsc-tools # same as pcsc-lite
# For OMNIKEY for driver Then unpack the file and run the installer:
cd /home/cccam/ifdokccid_lnx_x64-3.7.0/
chmod 755 install
sudo ./install
Run Code Online (Sandbox Code Playgroud)
我还希望该软件能够在 OpenJDK 1.8 64 位下运行,我也将安装它。重点是我需要运行这样的命令。我怎样才能用 JIB 做到这一点?有没有办法让 JIB 使用 Docker 文件?有没有办法将这样的命令脚本传递到 JIB 中?
我有一个简单的 SpringBoot 应用程序,我想使用Jib Maven 插件构建 docker 镜像。以下是我的插件配置:
<plugin>
<groupId>com.google.cloud.tools</groupId>
<artifactId>jib-maven-plugin</artifactId>
<version>2.1.0</version>
<configuration>
<from>
<image>openjdk:11-jdk-slim</image>
</from>
<to>
<image>username/appname</image>
<tags>
<tag>latest</tag>
<tag>${project.version}</tag>
</tags>
</to>
<container>
<mainClass>demo.Application</mainClass>
<ports>
<port>8080</port>
<port>8787</port>
</ports>
</container>
</configuration>
</plugin>
Run Code Online (Sandbox Code Playgroud)
我只想在本地构建映像并运行它。我不想一次性构建并推送到 docker 注册表。
当我运行命令mvn jib:build 时,它会使用我来自 Docker 配置(/Users/username/.docker/config.json) 的凭据自动推送到 DockerHub 。
有没有办法可以禁用推送和另一个目标只是将图像推送到注册表?
是否有一个相当于 Google 的 JIB 或 Node.JS 的 BuildPacks?
我的理解是 JIB 允许从项目的构建工具(如 Gradle 或 Maven)中构建 OCI 容器映像,作为开发人员,我们只需要在构建中包含一个插件,并且能够将应用程序打包到容器中并拥有 JIB实施将 Java 应用程序打包到容器中的所有最佳实践,而无需提出任何问题。
我四处搜索,但没有找到与 Node.JS 生态系统等效的东西。它应该可能只是进入节点开发人员时间依赖项,它会注意将我的 javascript/typescript Express.js 例如应用程序打包到 docker 容器或 OCI 映像中。
谢谢你,奥斯卡
因此,我尝试为我的项目添加 ssl 证书,在我的本地计算机上,我只需按照 keytool 命令即可添加它,然后它就可以工作了。但是当我尝试在拥有 k8s 集群的机器上执行相同的操作时,它似乎不起作用。
我看到几个人将 cer 添加到他们的 docker 文件中的 cacerts 中,但我没有,因为我正在使用谷歌的 Jib,所以我不确定它应该如何从这里开始,或者这是我应该的配置添加到我的 k8s 部署文件中吗?
当使用jib-gradle-plugin构建并推送到 AWS ECR 时,它要求我安装aws ecr 凭证助手,否则构建会抱怨“系统没有 docker-credential-ecr-login CLI”。
我想知道是否有一种方法可以在不安装凭证助手的情况下推送到 AWS ECR,或者是否可以在存储库中捆绑凭证助手的便携式版本?
安装助手的问题是:
我知道这不是 Jib 问题,但我只是希望使用 Jib 的人可能遇到类似的挑战,因此可以提供一些有关如何解决该问题的见解。
我有一个基本的 java 映像,其中包含一些预定义的 java_opts 作为环境变量。如何在插件中使用它们?
<plugin>
<groupId>com.google.cloud.tools</groupId>
<artifactId>jib-maven-plugin</artifactId>
<version>1.8.0</version>
<configuration>
<from>
<image>${docker.registry}java:11</image>
</from>
<to>
<image>${docker.registry}portal-backend:${dockerfile.tag}</image>
</to>
<container>
<jvmFlags>
# This will fail
<jvmFlag>$JAVA_OPTS</jvmFlag>
</jvmFlags>
</container>
</configuration>
</plugin>
Run Code Online (Sandbox Code Playgroud) jib ×10
docker ×3
dockerfile ×2
maven ×2
spring-boot ×2
amazon-ecr ×1
angular ×1
buildpack ×1
gradle ×1
java ×1
jhipster ×1
kubernetes ×1
maven-jib ×1
node.js ×1
spring ×1