将jar包打成docker镜像并推送到harbor上的标准步骤

将jar包打成docker镜像并推送到harbor上的标准步骤

第一步,写Dockerfile
FROM openjdk:8-jdk-alpine
LABEL maintainer="demo"
RUN ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
WORKDIR /opt/
COPY target/demo-gateway-2.0.1.jar .
ENTRYPOINT ["java", "-jar","demo-gateway-2.0.1.jar"]
EXPOSE 9081

将Dockerfile文件放置于项目的target文件夹同级目录。

第二步,打jar包
clean package
第三步,进入对应的项目

与Dockerfile文件同级

cd /backend/demo
第四步,打docker镜像
docker build -t demo-gateway:1.0 .

可以使用如下命令查看是否成功打成镜像

docker images # 查看镜像

第五步,测试docker镜像能成功启动

docker run -itd -p 9081:9081 -e "SPRING_PROFILES_ACTIVE=test" --name demo-gateway demo-gateway:1.0 

其中

-e "SPRING_PROFILES_ACTIVE=test" #指定配置文件进行启动

启动过程中可以查看日志

docker ps # 查看正在运行的docker 容器进程,找到对应的容器ID
docker logs 容器ID
第六步,测试启动成功后,进行贴标签
docker tag demo-gateway:1.0 harbor.xxx.com/demo/demo-gateway:1.0

这一步其实是镜像复制,将镜像demo-gateway:1.0复制为harbor.xxx.com/demo/demo-gateway:1.0 ,因此检测方式是使用

docker images #查看镜像列表中是否有 harbor.xxx.com/demo/demo-gateway 版本是 1.0

检测镜像harbor.xxx.com/demo/demo-gateway:1.0 中的Dockerfile与镜像demo-gateway:1.0的是否一致

docker history --format {{.CreatedBy}} --no-trunc=true 镜像ID |sed "s/\/bin\/sh\ -c\ \#(nop)\ //g"|sed "s/\/bin\/sh\ -c/RUN/g" | tac
第七步,将确认无误的docker镜像推送到harbor上

这一步可能需要登录harbor

docker login -u username -p password harbor.xxx.com

登录成功后进行推送镜像

docker push harbor.xxx.com/demo/demo-gateway:1.0
第八步,登录harbor web页面镜像查看是否有该版本的镜像
要将 Docker 镜像导入到 Harbor 仓库,您可以使用 Java 中的 Docker Java 客户端来执行相关操作。下面是一个示例代码,展示如何使用 Docker Java 客户端将镜像导入到 Harbor 仓库: 首先,确保您已经添加了正确的 Docker Java 客户端依赖,例如 `com.github.docker-java:docker-java`。您可以在 Maven 或 Gradle 中添加这些依赖。 然后,您可以使用以下代码来导入 Docker 镜像Harbor 仓库: ```java import com.github.dockerjava.api.DockerClient; import com.github.dockerjava.api.command.PushImageCmd; import com.github.dockerjava.api.model.AuthConfig; import com.github.dockerjava.core.DefaultDockerClientConfig; import com.github.dockerjava.core.DockerClientBuilder; import com.github.dockerjava.core.command.PushImageResultCallback; public class HarborImageImportExample { public static void main(String[] args) { String harborUrl = "https://your-harbor-url"; String harborUsername = "your-harbor-username"; String harborPassword = "your-harbor-password"; String imageName = "your-image-name"; String imageTag = "your-image-tag"; String harborProject = "your-harbor-project"; DockerClient dockerClient = DockerClientBuilder.getInstance(DefaultDockerClientConfig.createDefaultConfigBuilder().build()).build(); AuthConfig authConfig = new AuthConfig() .withRegistryAddress(harborUrl) .withUsername(harborUsername) .withPassword(harborPassword); PushImageCmd pushImageCmd = dockerClient.pushImageCmd(imageName) .withTag(imageTag) .withAuthConfig(authConfig) .withRegistry(harborUrl + "/v2/" + harborProject); pushImageCmd.exec(new PushImageResultCallback()).awaitSuccess(); } } ``` 在上述示例代码中,我们首先创建了一个 Docker 客户端对象,并使用 Harbor 的 URL、用户名和密码创建了一个 `AuthConfig` 对象,用于身份验证。然后,我们使用 Docker 客户端的 `pushImageCmd` 方法创建一个导入镜像的命令,并设置相关参数,如镜像名称、标签、身份验证配置和 Harbor 仓库地址。最后,我们执行导入命令,并等待导入过程完成。 请确保您已正确替换示例代码中的 Harbor 相关信息,包括 Harbor URL、用户名、密码、镜像名称、标签和仓库项目等。 这只是一个基本的示例,您可以根据需要进行更多的定制和操作,例如指定镜像的 Registry、添加额外的身份验证配置等。根据您使用的具体 Docker Java 客户端版本和 Harbor 版本,可能需要进行一些适应性调整。 请注意,此示例假设您的 Java 程序是在与 Docker Daemon 直接交互的环境中运行,例如在一台具有 Docker 引擎的机器上运行。如果您的 Java 程序是在与 Docker Daemon 分离的环境中运行(例如在容器中),您可能需要配置适当的 Docker 守护进程套接字或远程 API 连接。 请参考 Docker Java 客户端的官方文档以获取更多详细信息和示例代码:https://github.com/docker-java/docker-java
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值