失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > 【docker系列】docker之部署springboot项目

【docker系列】docker之部署springboot项目

时间:2023-02-01 19:29:01

相关推荐

【docker系列】docker之部署springboot项目

目录

一、项目依赖二、引入docker依赖三、项目打包四、编写Dockerfile文件五、构建镜像六、启动容器七、测试

一、项目依赖

本篇主题主要实战如何使用Docker部署springboot项目,那么首先保证服务器上已经安装完docker容器,如果尚未安装请移步《详解阿里云服务器安装docker》文章完成docker安装操作;以下直接搭建springboot项目;以下也是springboot项目中最基本的依赖项;因为我们想测试接口访问,故搭建的是一个web项目,那么我们提供一个controller层

controller类

@RestControllerpublic class HelloDockerController {@GetMapping("/hello")public String hello() {return "Hello Docker.";}}

pom.xml

<?xml version="1.0" encoding="UTF-8"?><project xmlns="/POM/4.0.0" xmlns:xsi="/2001/XMLSchema-instance"xsi:schemaLocation="/POM/4.0.0 /xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.6.3</version><relativePath/> <!-- lookup parent from repository --></parent><groupId>com.itwx</groupId><artifactId>docker-demo</artifactId><version>0.0.1-SNAPSHOT</version><name>docker-demo</name><description>Demo project for Spring Boot</description><properties><java.version>1.8</java.version></properties><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><optional>true</optional></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency></dependencies><build><plugins><plugin><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></plugins></build></project>

二、引入docker依赖

docker提供了maven构建的插件docker-maven-plugin,故pom.xml中<plugins>标签中引入docker的相关插件

<plugin><groupId>com.spotify</groupId><artifactId>docker-maven-plugin</artifactId><version>1.2.0</version><configuration><!-- 这里是最终生成的docker镜像名称 --><imageName>itwx/${project.artifactId}</imageName><!-- 基础镜像,运行一个springboot应用只需要基础的java环境就行 --><baseImage>java:8</baseImage><!-- docker启动的时候执行的命令 --><entryPoint>["java", "-jar", "/${project.build.finalName}.jar"]</entryPoint><resources><resource><targetPath>/</targetPath><directory>${project.build.directory}</directory><include>${project.build.finalName}.jar</include></resource></resources></configuration></plugin>

三、项目打包

项目编译,打成Jar包

mvn clean# -Dmaven.test.skip=true 是跳过测试代码mvn package -Dmaven.test.skip=true

四、编写Dockerfile文件

springboot项目我们采用使用dockerfile文件的方式构建镜像,故需要创建dockerfile文件,内容如下:

FROM openjdk:8 # FROM: 基础镜像,基于jdk8镜像开始COPY *.jar /app.jar # COPY: 将应用的配置文件也拷贝到镜像中。CMD ["--server.port=8097"]EXPOSE 8080 # EXPOSE:声明端口ENTRYPOINT ["java","-jar","/app.jar"]# ENTRYPOINT:docker启动时,运行的命令,这里容器启动时直接运行jar服务。

注意

1、文件名一定别写错了,Dockerfile,非驼峰格式;

2、将项目jar包和Dockerfile文件上传到服务器;

3、Jar包和Dockerfile文件要在同一目录下;

五、构建镜像

命令:docker build -t docker-demo .

docker bulid是打包命令-t镜像加一个Tagdocker-demo自定义的镜像名字.小数点表示当前目录,即Dockerfile所在目录

等待镜像构建完成

[root@VM-4-8-centos project]# docker build -t docker-demo .Sending build context to Docker daemon 17.77MBStep 1/5 : FROM openjdk:88: Pulling from library/openjdk0c6b8ff8c37e: Pull complete412caad352a3: Pull completee6d3e61f7a50: Pull complete461bb1d8c517: Pull completee442ee9d8dd9: Pull complete36b5bcea956c: Pull complete8ed70148ebcf: Pull completeDigest: sha256:208812d8c45e0f5cb51c35b143094bd28322bad83ec8e463a1cbe3c5a6308b1fStatus: Downloaded newer image for openjdk:8---> 47482c603b2aStep 2/5 : COPY *.jar /app.jar---> 843484f82093Step 3/5 : CMD ["--server.port=8083"]---> Running in 62d4bd1ddf75Removing intermediate container 62d4bd1ddf75---> 9ef3ddc144faStep 4/5 : EXPOSE 8080---> Running in e0e627838cc3Removing intermediate container e0e627838cc3---> ac55c9edc15dStep 5/5 : ENTRYPOINT ["java","-jar","/app.jar"]---> Running in 673eb2c738e2Removing intermediate container 673eb2c738e2---> 4e0c81d17c49Successfully built 034aca093b5eSuccessfully tagged docker-demo:latest查看生成的镜像列表[root@VM-4-8-centos project]# docker imagesREPOSITORY TAG IMAGE ID CREATEDSIZEdocker-demo latest 034aca093b5e 16 minutes ago 544MBopenjdk 8 47482c603b2a 2 weeks ago526MBhello-worldlatest feb5d9fea6a5 5 months ago13.3kBcentos latest 5d0da3dc9764 5 months ago231MB

六、启动容器

命令:docker run -d -p 8097:8097 --name docker-demo-container docker-demo

-d是后台运行-p 8097:8097端口映射--name定义容器名字docker-demo以哪个镜像为基础运行容器

运行如下:

[root@VM-4-8-centos project]# docker run -d -p 8097:8097 --name docker-demo-container docker-demob38019663d93a9917b842e89b59861ac9ce118c02c906f52e8025c30488a2336查看容器[root@VM-4-8-centos project]# docker psCONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES8cdb27ca5858 docker-demo "java -jar /app.jar …" 4 minutes ago Up 4 minutes 0.0.0.0:8097->8097/tcp, :::8097->8097/tcp docker-demo-container2abc9f2c0dde centos "/bin/bash" 46 hours ago Up 45 hours my_centos

七、测试

[root@VM-4-8-centos project]# curl localhost:8097/hello

结果如下:

如果觉得《【docker系列】docker之部署springboot项目》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。