IDEA推送docker镜像到私服/利用dockerfile-maven-plugin插件在springboot中上传镜像到远程的docker服务器、远程仓库

本文讲解在开发工具中将Spring Boot打包好的jar编译成Docker镜像,上传到远程Docker服务器,并创建测试容器验证程序。介绍了生成证书、开启远程端口、配置环境变量的方法,还说明了使用dockerfile - maven - plugin插件上传镜像的步骤及注意事项。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

利用dockerfile-maven-plugin插件在springboot中上传镜像到远程仓库
这篇文章讲解在开发工具中把打包好的jar编译成docker镜像,上传到远程的docker服务器,以及根据镜像创建测试docker容器,验证springboot程序,以及Dockerfile配置
在这里插入图片描述
如何生成证书以及docker服务器开启远程端口,参考这篇文章:
https://blog.youkuaiyun.com/qq_21187515/article/details/90262324

  1. windows下配置环境变量
    增加三个系统环境变量,在环境变量->系统变量->新建
    DOCKER_HOST=tcp://192.168.74.82:2376
    DOCKER_CERT_PATH=证书路径
    DOCKER_TLS_VERIFY=1

备注:
1)证书路径目录下面有三个证书文件 ca.pem、cert.pem、key.pem
2)DOCKER_HOST中的ip是docker服务器的ip

在这里插入图片描述在这里插入图片描述

注:改了系统环境变量,我们的编译器要关闭后重新启动,否则这环境变量没有生效,按下面的推送操作到仓库会报错:错误信息大概是ssl认证失败,提示java.util.concurrent.ExecutionException: com.spotify.docker.client.shaded.javax.ws.rs.ProcessingException: javax.net.ssl.SSLException,这时重启即可解决

2.springboot项目使用dockerfile-maven-plugin插件
pom.xml文件

 <plugin>
                <groupId>com.spotify</groupId>
                <artifactId>dockerfile-maven-plugin</artifactId>
                <version>1.4.3</version>
                <!--<executions>
                    <execution>
                        <id>default</id>
                        <goals>
                            <goal>build</goal>
                            <goal>push</goal>
                        </goals>
                    </execution>
                </executions>-->
                <configuration>
                    <repository>121.42.162.203:5000/${project.artifactId}</repository>
                    <tag>${project.version}</tag>
                    <buildArgs>
                        <JAR_FILE>target/${project.build.finalName}.jar</JAR_FILE>
                        <JAR_EXPOSE>8082</JAR_EXPOSE>
                    </buildArgs>
                </configuration>
            </plugin>

注:
1.repository属性里的ip要修改成自己的docker私有仓库ip和端口号
2.如果还没有搭建docker仓库的话,参考:docker私有仓库搭建

springboot项目的根目录新建Dockerfile文件,复制下面的代码
在这里插入图片描述

FROM openjdk:8-jre
ARG JAR_EXPOSE=8082
EXPOSE $JAR_EXPOSE
ARG JAR_FILE
ADD $JAR_FILE /app.jar
ENTRYPOINT ["java", "-jar", "-Duser.timezone=GMT+08", "/app.jar"]
  1. 执行maven命令上传镜像
    mvn clean package dockerfile:build dockerfile:push -Dmaven.test.skip=true
    在这里插入图片描述

    注:
    1.上面的dockerfile:build dockerfile:push的意思是build先上传项目在docker守护进程的服务器生成镜像,push推送镜像到docker的私有仓库
    2. -Dmaven.test.skip=true的意思是跳过测试用例
    3. 不想执行上面的maven命令的话,也可以直接在dockerfile的插件上先双击dockerfile:build,再双击dockerfile:push
    在这里插入图片描述

    在这里插入图片描述在这里插入图片描述

  2. maven命令成功执行后可以在docker服务器看到镜像 docker images
    在这里插入图片描述

  3. 在docker的私有仓库可以看到镜像已经推到仓库
    在这里插入图片描述

  4. docker run这个springboot编译的docker镜像

docker run --name countgame -d -p 8082:8082 6f0d

注:后面的6f0d是image_id,在docker images的后面可以看到

  1. docker ps可以看到容器已经启动
    在这里插入图片描述
  2. 查看容器启动日志,日志正常
docker logs --tail 300 -f countgame

在这里插入图片描述

  1. 用curl测试程序是否正常,可以看到有内容返回,返回的网页正常
curl http://127.0.0.1:8082/countgame/user/toGame

在这里插入图片描述

注:
1.修改了系统变量需要重启开发工具才能生效,一开始提示上传镜像失败,看了错误是上传的ip还是默认的127.0.0.1,重启IDEA或者eclipse就可以了

在Spring Boot项目中,要使用`docker-maven-plugin`将应用打包成Docker镜像推送到私有仓库,首先需要在`pom.xml`文件中添加`docker-maven-plugin`的配置。以下是一个基本的配置示例: ```xml <project> ... <build> ... <plugins> <!-- 添加docker-maven-plugin --> <plugin> <groupId>com.spotify</groupId> <artifactId>docker-maven-plugin</artifactId> <version>0.4.13</version> <!-- 根据实际版本更换 --> <configuration> <!-- 定义Dockerfile的位置 --> <dockerFileDir>${project.basedir}/src/main/docker</dockerFileDir> <!-- 定义构建后的镜像名称 --> <imageName>${project.artifactId}</imageName> <dockerHost>tcp://your-docker-host:2375</dockerHost> <!-- 连接私有仓库地址 --> <registryUrl>https://your-private-registry.com/v2/</registryUrl> <!-- 如果需要登录私有仓库 --> <username>your-registry-username</username> <password>your-registry-password</password> <!-- 构建镜像 --> <imageTags> <imageTag>${project.version}</imageTag> <!-- 使用maven项目版本作为tag --> </imageTags> </configuration> <executions> <!--插件配置为在package阶段运行 --> <execution> <id>build-image</id> <phase>package</phase> <goals> <goal>build</goal> </goals> </execution> </executions> </plugin> </plugins> ... </build> ... </project> ``` 在这个配置中,你需要替换以下部分: - `dockerFileDir`: Dockerfile所在的目录,默认通常是`src/main/docker`。 - `imageName`: 自定义镜像的名称,通常基于Maven项目的groupId和artifactId组合而成。 - `dockerHost`, `registryUrl`, `username` 和 `password`: 你的私有Docker registry的连接信息,包括主机地址、认证凭据等。 - `<imageTag>`: 镜像的标签,可以根据项目需求设置,如使用`${project.version}`表示使用当前的Maven项目版本。 记得在运行`mvn clean install docker:build`命令时,如果有权限错误,可能会需要提供额外的认证信息。
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值