目录
一、项目依赖二、引入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项目》对你有帮助,请点赞、收藏,并留下你的观点哦!