SpringBoot项目使用docker 您所在的位置:网站首页 荔枝生长发育周期 SpringBoot项目使用docker

SpringBoot项目使用docker

2023-04-01 02:35| 来源: 网络整理| 查看: 265

(1573条消息) SpringBoot项目使用docker-maven-plugin插件构建docker镜像以及推送到docker hub或docker registry私服_spring boot docker插件_FLY-DUCK的博客-CSDN博客https://blog.csdn.net/fly_duck/article/details/124709727(1574条消息) 使用Dockerfile文件制作java的jar架包镜像具体过程_memory丶of的博客-CSDN博客https://blog.csdn.net/qq_25406669/article/details/98853529

我们知道docker可将应用程序和基础设施层隔离,可更快地打包、测试以及部署应用程序。本文主要介绍SpringBoot项目如何构建docker镜像以及推送到私服或者docker hub服务器上。

本文介绍的方式是使用docker-maven-plugin的方式构建SpringBoot的docker镜像以及推送到私服或docker hub服务器上。

Docker环境配置 Docker的2375端口是默认关闭的,如果我们要使用到它,就需要进行以下的配置: 1、安装有docker的服务器,修改docker.service文件: vi /etc/systemd/system/docker.service 具体文件所在地,得看你安装docker的位置,如果不知道自己安装在哪里了,执行以下指令去查找: sudo find / -name docker.service 2、修改docker.service 找到文件以下内容: ExecStart=/usr/bin/dockerd 修改为: ExecStart=/usr/bin/dockerd -H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock 本地环境配置

docker-maven-plugin 插件默认连接本地 Docker 地址为:localhost:2375,如果我们本地开发环境有docker环境并准备使用本地开发环境的docker,只需要先设置下本地开发环境的环境变量。

DOCKER_HOST=tcp://:2375 服务器环境配置

如果使用CentOS服务器上的docker环境 (CentOS上安装docker环境),则需要在服务器上修改 docker 配置,开启允许远程访问 docker 的功能,开启方式很简单,修改 /usr/lib/systemd/system/docker.service 文件,ExecStart中加入如下内容:

-H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock

 修改好配置后,使用如下命令重启docker生效:

systemctl daemon-reload systemctl restart docker IDEA测试docker连接

IDEA 中我们可以测试服务器上的docker环境是否连接成功,打开 File->Settings->Build,Execution,Deployment->Docker ,然后配置一下 Docker 的远程连接地址:

配置一下 Docker 的地址,配置完成后,提示 Connection successful 信息,表示 Docker 已经连接上了。

SpringBoot项目引入docker-maven-plugin插件 pom.xml配置

项目中引入docker-maven-plugin插件,在pom.xml引入插件并做相应的配置:

com.spotify docker-maven-plugin 1.2.2 buildAndPush install build push http://192.168.**.***:2375 docker-hub 1 2000 https://index.docker.io/v1/ flyduck128/${project.artifactId} v1.0 ${project.basedir}/src/main/docker true / ${project.build.directory} ${project.build.finalName}.zip

Docker命令可以绑定到maven各阶段命令中。该示例配置中我们在execution上将docker的build和push命令绑定在了maven的install阶段命令中。当springboot项目执行maven的install命令阶段,会执行docker的build和push命令。

如果需要推送到docker hub或者私服,还需要在本地的maven目录的setting.xml中配置相应的server:

docker-hub flyduck128 *** ***@qq.com

如果我们不需要推送到docker hub或者私服,可以不配置docker的push命令以及相应的推送配置:

docker-hub 1 2000 https://index.docker.io/v1/ flyduck128/${project.artifactId} Dockerfile文件配置

Dockerfile文件放入项目的/src/main/docker目录,在上面的pom.xml中dockerDirectory节点中保持一致。Dockerfile文件配置如下:

FROM openjdk:8 MAINTAINER flyduck '[email protected]' ENV APP_HOME=/usr/local/app ENV PROJECT_HOME=${APP_HOME}/springboot-docker-1.0-SNAPSHOT COPY springboot-docker-1.0-SNAPSHOT.zip springboot-docker.zip RUN mkdir -p ${APP_HOME} && mv springboot-docker.zip ${APP_HOME} RUN cd ${APP_HOME} && unzip springboot-docker.zip && rm -rf springboot-docker.zip RUN chmod 777 ${PROJECT_HOME}/bin/dockerrun.sh EXPOSE 7003 ENTRYPOINT sh ${PROJECT_HOME}/bin/dockerrun.sh

Dockerfile镜像制作逻辑如下:

项目的运行依赖 Java 环境,所以镜像基于 openjdk:8镜像来构建。容器中创建/user/local/app目录,将打包的zip文件拷贝到容器中,并移动到/user/local/app目录,然后解压zip文件到/user/local/app目录。将程序的端口通过EXPOSE暴露出来。最后就是配置一下启动命令,由于我们springboot项目使用的zip打包发布的方式,所以启动的方式和默认springboot项目有些区别。这里我们单独将启动配置放入dockerrun.sh文件,然后通过运行dockerrun.sh文件的方式启动程序。

dockerrun.sh运行程序配置如下:

# app home APP_HOME=/usr/local/app/springboot-docker-1.0-SNAPSHOT # java jar PROJECT_NAME=${APP_HOME}/springboot-docker-1.0-SNAPSHOT.jar #spring init load application properties or yml CONF_FILE=${APP_HOME}/config/application.yml # java opts. JAVA_OPTS="-Xms64m -Xmx64m -Xmn64m" #pid file PID_CONF=${APP_HOME}/pid/process.pid java ${JAVA_OPTS} -Djava.ext.dirs=${APP_HOME}/lib:$JAVA_HOME/jre/lib/ext -Dspring.config.location=${CONF_FILE} -jar ${PROJECT_NAME} 构建镜像以及推送到服务器

在IDEA中直接点击install,会先打包springboot项目,然后在dockerHost配置的服务器上构建镜像,最后推送到registerUrl配置的docker私服或者hub docker上。

 项目install完成后,登录linux服务器,可以看到镜像已经构建成功:

登录docker hub网站,可以看到镜像已经推送到docker hub上: 

 

总结

本文主要介绍如何在IDEA中将SpringBoot项目构建docker镜像并推送到私服或者docker hub上,本文通过使用docker-maven-plugin插件的方式,连接docker环境的linux服务器构建docker镜像,并推送到docker hub上。如果需要推送到私服上,只需要将pom.xml中推送的配置修改私服的配置即可。示例代码已经上传至Gitee上,感兴趣的小伙伴可以直接获取查看。

参考

CentOS上安装docker环境

Maven 插件之 docker-maven-plugin 的使用

Github上docker-maven-plugin源码地址

docker与Spring boot的集成:docker-maven-plugin使用Maven 插件之 docker-maven-plugin 的使用docker-maven-plugin的github地址

使用Maven插件构建SpringBoot项目,生成Docker镜像push到DockerHub上 - 码农教程

详细docker-maven-plugin使用方法_服务器_网站技巧 - 编程客栈

私服registry安装



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有