在Spring Boot项目中使用jib-maven-plugin或jib-gradle-plugin打包Docker镜像并将其推送到私有仓库(例如Harbor)的过程如下:
以Maven为例:
- 添加jib插件依赖:
在项目的pom.xml
文件中添加jib-maven-plugin的依赖和配置。
<project>
...
<build>
<plugins>
<plugin>
<groupId>com.google.cloud.tools</groupId>
<artifactId>jib-maven-plugin</artifactId>
<version>3.x.x</version> <!-- 使用最新稳定版本 -->
<configuration>
<from>
<image>adoptopenjdk:11-jre-hotspot</image> <!-- 基础镜像 -->
</from>
<to>
<image>${your-repo-url}/${project.artifactId}:${project.version}</image> <!-- 目标镜像及标签 -->
</to>
<container>
<ports>
<port>8080</port> <!-- 暴露端口 -->
</ports>
<!-- 其他容器配置如环境变量、用户、工作目录等 -->
</container>
<!-- 配置私有仓库认证信息 -->
<auth>
<username>your-username</username>
<password>your-password</password> <!-- 或者通过maven设置加密 -->
</auth>
</configuration>
</plugin>
</plugins>
</build>
...
</project>
-
配置私有仓库认证:
jib支持多种方式配置认证信息,对于私有仓库,通常可以通过以下方式之一:- 直接在
pom.xml
中填写用户名和密码(不推荐,因为安全性问题)。 - 使用
.m2/settings.xml
文件中的服务器配置进行认证,例如:
<settings> ... <servers> <server> <id>your-repo-id</id> <username>your-username</username> <password>your-password</password> </server> </servers> ... </settings>
然后在
jib.to.image
中引用这个ID,如<image>your-repo-id/${project.artifactId}:${project.version}</image>
。 - 直接在
-
构建并推送镜像:
执行以下命令构建并推送Docker镜像到私有仓库。
mvn clean package jib:build
- 注意:
对于Harbor或其他支持Docker Registry V2协议的私有仓库,确保URL正确无误,并且如果需要HTTPS连接,还需确保SSL证书被信任。另外,部分私有仓库可能需要额外配置,如登录凭证或安全策略等。
以Gradle为例:
对于Gradle项目,类似地,在build.gradle
中配置jib插件:
plugins {
id 'com.google.cloud.tools.jib' version '3.x.x'
}
jib {
from {
image = 'adoptopenjdk:11-jre-hotspot'
}
to {
image = "your-repo-url/${project.name}:${project.version}"
}
container {
ports = ['8080']
}
// 可以选择在本地gradle.properties文件中存储凭证
credentials {
username = project.property('dockerRegistryUsername')
password = project.property('dockerRegistryPassword')
}
}
然后,你可以在终端中运行以下命令来构建和推送镜像:
./gradlew jib
同样,请根据实际的私有仓库要求调整认证和配置细节。