栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 系统运维 > 运维 > Linux

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

Linux 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

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

目录

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

一、项目依赖

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

controller类

@RestController
public class HelloDockerController {

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

pom.xml



    4.0.0
    
        org.springframework.boot
        spring-boot-starter-parent
        2.6.3
         
    
    com.itwx
    docker-demo
    0.0.1-SNAPSHOT
    docker-demo
    Demo project for Spring Boot
    
        1.8
    
    
        
            org.springframework.boot
            spring-boot-starter-web
        

        
            org.projectlombok
            lombok
            true
        
        
            org.springframework.boot
            spring-boot-starter-test
            test
        
    

    
        
            
                org.springframework.boot
                spring-boot-maven-plugin
                
                    
                        
                            org.projectlombok
                            lombok
                        
                    
                
            
            
        
    



二、引入docker依赖

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


            com.spotify
            docker-maven-plugin
            1.2.0
            
                
                itwx/${project.artifactId}
                
                java:8
                
                ["java", "-jar", "/${project.build.finalName}.jar"]
                
                    
                        /
                        ${project.build.directory}
                        ${project.build.finalName}.jar
                    
                
            

三、项目打包

项目编译,打成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.77MB
Step 1/5 : FROM openjdk:8
8: Pulling from library/openjdk
0c6b8ff8c37e: Pull complete
412caad352a3: Pull complete
e6d3e61f7a50: Pull complete
461bb1d8c517: Pull complete
e442ee9d8dd9: Pull complete
36b5bcea956c: Pull complete
8ed70148ebcf: Pull complete
Digest: sha256:208812d8c45e0f5cb51c35b143094bd28322bad83ec8e463a1cbe3c5a6308b1f
Status: Downloaded newer image for openjdk:8
 ---> 47482c603b2a
Step 2/5 : COPY *.jar /app.jar
 ---> 843484f82093
Step 3/5 : CMD ["--server.port=8083"]
 ---> Running in 62d4bd1ddf75
Removing intermediate container 62d4bd1ddf75
 ---> 9ef3ddc144fa
Step 4/5 : EXPOSE 8080
 ---> Running in e0e627838cc3
Removing intermediate container e0e627838cc3
 ---> ac55c9edc15d
Step 5/5 : ENTRYPOINT ["java","-jar","/app.jar"]
 ---> Running in 673eb2c738e2
Removing intermediate container 673eb2c738e2
 ---> 4e0c81d17c49
Successfully built 034aca093b5e
Successfully tagged docker-demo:latest


查看生成的镜像列表
[root@VM-4-8-centos project]# docker images
REPOSITORY       TAG       IMAGE ID       CREATED          SIZE
docker-demo   latest    034aca093b5e   16 minutes ago   544MB
openjdk       8         47482c603b2a   2 weeks ago      526MB
hello-world      latest    feb5d9fea6a5   5 months ago     13.3kB
centos           latest    5d0da3dc9764   5 months ago     231MB
六、启动容器

命令: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-demo
b38019663d93a9917b842e89b59861ac9ce118c02c906f52e8025c30488a2336
查看容器
[root@VM-4-8-centos project]# docker ps
ConTAINER ID   IMAGE         COMMAND                  CREATED         STATUS         PORTS                                       NAMES
8cdb27ca5858   docker-demo   "java -jar /app.jar …"   4 minutes ago   Up 4 minutes   0.0.0.0:8097->8097/tcp, :::8097->8097/tcp   docker-demo-container
2abc9f2c0dde   centos        "/bin/bash"              46 hours ago    Up 45 hours                                                my_centos                              
七、测试
[root@VM-4-8-centos project]# curl localhost:8097/hello

结果如下:

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/747005.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号