关键词:
SpringBoot微服务项目打包成Docker镜像详解
SpringBott打包成Docker镜像的两种方式
- 将springboot项目打成一个jar包,上传linux服务器指定目录下,然后再对应的目录下编写一个Dockefile文件,然后进行打包
- IDEA集成Docker插件,通过maven的docker插件,远程打包成镜像弄到linux上,并且可以在本机的IDEA中操作容器和镜像
下面介绍的是第二种方式,而不是第一种
第一步: 配置Docker的远程访问
1.修改 /usr/lib/systemd/system/docker.service
vim /usr/lib/systemd/system/docker.service
2.替换ExecStart
将
ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock
替换为
ExecStart=/usr/bin/dockerd -H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock
3.重启Docker服务
systemctl daemon-reload
systemctl restart docker
4.查看2375端口是否被监听
netstat -nlpt
5.服务器防火墙开启2375端口
firewall-cmd --add-port=2375/top --permanent
firewall-cmd --reload
firewall-cmd --zone=public --list-ports
6.检查是否配置好
linux主机ip加2375端口号/version,如果出来了东西,表示配置成功
IDEA配置
Docker插件安装,并设置远程docker的地址
pom.xml添加maven-docker插件,自动生成镜像,并推送到仓库
如果使用maven-docker插件,可以选择在configuration标签中指定dockerfile的文件位置,也可以在configuration中自己配置替代dockerfile文件
下面第一种是指定dockfile文件的位置:
<plugin>
<groupId>com.spotify</groupId>
<artifactId>docker-maven-plugin</artifactId>
<version>1.0.0</version>
<!--进行相关配置-->
<configuration>
<!-- 指定 Dockerfile 路径 $project.basedir:项目根路径下-->
<dockerDirectory>$project.basedir</dockerDirectory>
<!--指定生成的镜像名: 前缀/项目名称-->
<imageName>xfx/$project.artifactId</imageName>
<!--指定标签-->
<imageTags>
<imageTag>latest</imageTag>
</imageTags>
<!-- 远程docker的地址-->
<dockerHost>Http://192.168.112.128:2375</dockerHost>
<!-- 这里是复制 jar 包到 docker 容器指定目录配置 -->
<resources>
<resource>
<targetPath>/</targetPath>
<!--jar 包所在的路径 此处配置的 即对应 target 目录-->
<directory>$project.build.directory</directory>
<!-- 需要包含的 jar包 ,这里对应的是 Dockerfile 中添加的文件名 -->
<include>$project.build.finalName.jar</include>
</resource>
</resources>
</configuration>
</plugin>
对应的Dockerfile文件
#基础镜像通过java8来的
FROM java:8
#挂载卷是临时目录
VOLUME /tmp
#将Demo1-520.finnally.jar.jar 拷贝到容器内的的Demo1-520.finnally.jar.jar中(这个Demo1-520.finnally.jar.jar是自己生成的)
COPY target/Demo1-520.finnally.jar /xfx.jar
#暴露端口
EXPOSE 80
#执行命令java -jar
ENTRYPOINT ["java","-jar","/xfx.jar"]
这里COPY的相对路径,是从当前Dockerfile所在目录开始
COPY target/Demo1-520.finnally.jar /xfx.jar
完全替代dockerfile文件
<properties>
<java.version>1.8</java.version>
<docker.image.prefix>xfx</docker.image.prefix>
</properties>
<build>
<plugins>
<plugin>
<!-- springboot用来生成jar包的插件-->
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<excludes>
<exclude>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</exclude>
</excludes>
</configuration>
</plugin>
<plugin>
<groupId>com.spotify</groupId>
<artifactId>docker-maven-plugin</artifactId>
<version>1.0.0</version>
<!-- configuration替代编写的Dockerfile文件 -->
<configuration>
<!-- 指定基础镜像-->
<baseImage>java</baseImage>
<!-- 创作者本人的信息-->
<maintainer>dhy dhy@qq.com</maintainer>
<!-- 切换到root目录-->
<workdir>/ROOT</workdir>
<!-- 执行的命令-->
<cmd>["java","-version"]</cmd>
<entryPoint>["java","-jar","$project.build.finalName.jar"]</entryPoint>
<!-- 指定Dcokerfile路径,$project.basedir:项目根路径-->
<!-- <dockerDirectory>$project.basedir</dockerDirectory>-->
<!--指定生成的镜像名: 镜像名前缀/项目名称-->
<imageName>$docker.image.prefix/$project.artifactId</imageName>
<!--指定标签-->
<imageTags>
<!-- 可替换为当前项目的版本号-->
<imageTag>$project.version</imageTag>
</imageTags>
<!-- 远程docker api 地址-->
<dockerHost>Http://192.168.112.128:2375</dockerHost>
<!-- 这里是复制 jar 包到 docker 容器指定目录配置 -->
<resources>
<resource>
<!-- 放到容器哪个目录下面-->
<targetPath>/ROOT</targetPath>
<!-- 用于指定需要复制的根目录-->
<!--jar 包所在的路径 此处配置的 即对应 target 目录-->
<directory>$project.build.directory</directory>
<!-- 用于指定需要复制的文件-->
<!-- 需要包含的 jar包 ,这里对应的是 Dockerfile 中添加的文件名 -->
<include>$project.build.finalName.jar</include>
</resource>
</resources>
</configuration>
</plugin>
</plugins>
</build>
如上用docker-maven插件,自动生成如下文件:
FROM java
MAINTAINER dhy dhy@qq.com
WORKDIR /ROOT
ADD /ROOT/Demo1.jar /ROOT/
ENTREPOINT ["java","-jar","Demo1.jar"]
CMD ["java","-version"]
执行mvn命令
mvn clean package docke:build
清理,打包,构建
执行mvn命令,有点繁琐,可以绑定插件的运行时间到maven执行打包的生命周期阶段
将Docker命令绑定到maven各个阶段
我们可以把Docker分为build,tag,push,然后分别绑定到Maven的package,deploy阶段
我们只需要执行mvn deploy就可以完成build,tag,push操作,当我们执行mvn build就只完成build,tag操作
<executions>
<!--当执行mvn package时,执行 mvn clean package docker:build-->
<execution>
<id>build-image</id>
<!--用户只需执行mvn package ,就会自动执行mvn docker:build-->
<phase>package</phase>
<goals>
<goal>build</goal>
</goals>
</execution>
<!--当执行mvn package时,会对镜像进行标签设定-->
<execution>
<id>tag-image</id>
<!--用户只需执行mvn package ,就会自动执行mvn docker:tag-->
<phase>package</phase>
<goals>
<goal>tag</goal>
</goals>
<configuration>
<image>$docker.image.prefix/$project.artifactId:latest</image>
<newName>docker.io/$docker.image.prefix/$project.artifactId:$project.version</newName>
</configuration>
</execution>
<!--当执行mvn deploy 时,执行 mvn deploy docker:push-->
<execution>
<id>push-image</id>
<!--用户只需执行mvn package ,就会自动执行mvn docker:push-->
<phase>deploy</phase>
<goals>
<goal>push</goal>
</goals>
</execution>
</executions>
参考文章
一键部署 Spring Boot 到远程 Docker 容器,就是这么秀!
springboot 整合 docker, 进行自动化部署,其实没你想象的那么难
docker06_springboot微服务项目打包成docker镜像详解(代码片段)
...包,多阶段构建①.构建SpringBoot项目①.创建一个springboot微服务项目②.编写测试类@RestController@SpringBootApplicationpublicclassDemoApplicationpubl 查看详情
docker一键打包微服务(代码片段)
...er仓库中这里我们采用jib-maven-plugin来进行来构建容器化的springboot应用程序,Jib可以让不写Dockerfile就能实现Docker打包什么是JibJib带来的是,它允许您通过简单地将插件添加 查看详情
springboot微服务打包为docker镜像(代码片段)
1、构建springboot项目2、打包应用3、编写dockerfileFROMjava:8COPY*.jar/app.jarCMD["--server.port=8080"]EXPOSE8080ENTRYPOINT["java","-jar","/app.jar"]4、构建镜像dockerbuild-tspringbootd 查看详情
springboot的项目打包成的jar包,制作成docker镜像并运行
...作首先把本地的项目打包好,我这里直接把已经打包好的springboot-mybatis-0.0.1-SNAPSHOT.jar包直接上传到linuxmydemo目录中并在此目录创建Dockerfile文件/usr/local/mydemo构建DockerFile:vimDockerFile说明:FROM::项目依赖,需要一个java8版本的jdkADD 查看详情
dockermaven打包springboot项目成docker镜像并上传到harbor仓库(eclipsestsideamaven通用)
写在前面最近,在研究如何使用Maven将SpringBoot项目打包成Docker镜像并发布到Harbor仓库,网上翻阅了很多博客和资料,发现大部分都是在复制粘贴别人的东西,没有经过实践的检验,根本解决不了问题,纯属扯淡。作为一个技术人... 查看详情
javaspringboot项目打包成docker镜像(代码片段)
背景我们的服务是springboot开发的,但是部署的时候是使用的docker部署的,所以在打包的时候,需要打包成dockerimage,下面说说如何进行配置,才能在package的时候得到docker镜像。环境本地环境打包的话,要... 查看详情
怎么把springboot打包成镜像部署到docker
你好,当想让一个容器做两件事情,或者使一个Docker镜像包含来自两个不同镜像的依赖库时,就需要知道每个镜像的Dockerfile。本文介绍了如何通过dockerhistory命令来对Docker镜像进行反向工程,得到它们的Dockerfile,并组织到一个Doc... 查看详情
springboot打包成jar,使用docker部署,关于文件上传本地哪些事(代码片段)
...:需要给HR写一个自动祝福生日的机器人,就用了SpringBoot构建了一个项目,之后打包成jar,构建docker镜像,部署。问题:因为,员工有关的信息,是无法通过某一个接口获取到的,所以是需要每... 查看详情
docker部署springboot项目
Docker相关安装dockeryum-yinstalldocker(centos下)运行docker服务servicedockerstart或者/bin/systemctlstartdocker.serviceIdea新建web项目编写测试controller,打包成jar包,测试可运行访问并输出内容;编写DockerfileFROMjava:8EXPOSE86VOLUME/tmpADDdock 查看详情
docker运行jenkins及vue项目与springboot项目(五.jenkins打包springboot服务且在docker中运行)
docker运行jenkins及vue项目与springboot项目:一.安装docker二.docker运行jenkins为自动打包运行做准备三.jenkins的使用及自动打包vue项目四.docker运行nginx五.jenkins打包springboot服务且在docker中运行1.立即构建输入任务名称:service_blog选择maven项... 查看详情
在idea中如何将springboot项目打包成可执行的jar包并发布到linux服务
...成一个可执行的jar包,并发布到linux服务器的步骤。因为springboot有内置的tomcat所以一般使用内置的tomcat就可以可,当然也使用外部的tomcat容器。如有疑问可以添加qq:850534486交流步骤1:File->ProjectStructure步骤2:ProjectSettings->Ar 查看详情
springboot(maven)+docker打包(代码片段)
SpringBoot(Maven)+Docker打包本文可以实现:将SpringBoot项目从GitHubclone到服务器上后,一条命令直接完成依赖下载-编译-镜像生成-容器运行。注意:本文SpringBoot项目为单机部署,即只在一台服务器进行部署,并使... 查看详情
微服务系列教程
...含SpringCloud基础视频教程、SpringCloud高级教程+项目实战、Springboot入门教程、Springboot进阶教程、SpringEcosystem微服务相关、SpringBoot入门IDEA版本、SpringBoot实战与原理分析视频课程、docker构建微服务、docker入门、docker进阶、docker解析... 查看详情
docker与springboot的集成:docker-maven-plugin使用
使用SpringBoot编写了一个微服务后,如何将构建应用并打包成docker镜像,推送到docker仓库,以供测试环境测试。docker-maven-plugin插件可以完成这项任务。最近使用了docker-maven-plugin插件,想写一篇关于使用总结的文章,但发现它在git... 查看详情
springboot项目docker打包dockerfile(代码片段)
新建Dockerfile内容如下FROMopenjdk:8u272-jdkasbuilderWORKDIRapplicationARGJAR_FILE=target/app-2.0.jarCOPY$JAR_FILEapplication.jarRUNjava-Djarmode=layertools-jarapplication.jarextractFROMopenjdk:8u272 查看详情
docker运行jenkins及vue项目与springboot项目(四.docker运行nginx)
docker运行jenkins及vue项目与springboot项目:一.安装docker二.docker运行jenkins为自动打包运行做准备三.jenkins的使用及自动打包vue项目四.docker运行nginx五.jenkins打包springboot服务且在docker中运行准备配置创建/home/jenkins/docker/nginx/nginx.conf文件... 查看详情
docker部署springboot项目
Docker相关安装dockeryum-yinstalldocker(centos下)运行docker服务servicedockerstart或者/bin/systemctlstartdocker.serviceIdea新建web项目编写测试controller,打包成jar包,测试可运行访问并输出内容;编写DockerfileFROMjava:8EXPOSE86VOLUME/tmpADDdocker_demo-0.0.1-SN... 查看详情
springboot+docker项目打包(jar)和部署
参考技术A一、打包SpringBoot项目1.检查pom文件是否有maven打包插件2.选择IDEA右侧Maven,点击install(如果配置了maven的环境变量,则可以在控制台输入:mvninstall命令,同样可以打包jar包)等待maven打包,当控制台出现下列日志时表示打... 查看详情