目录

  • 一、项目依赖
  • 二、引入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
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/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 镜像加一个Tag
  • docker-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

结果如下:

【docker系列】docker之部署springboot项目相关推荐

  1. 【Docker】11、IDEA集成Docker插件实现一键部署SpringBoot项目

    日常开发项目的过程中,我们每次需要部署线上的时候,都需要安装一大堆的运行环境,例如:JDK.MySQL.Redis 等,非常花费时间.我们可以使用 Docker 的容器技术,方便快捷地搭建项目启动所需 ...

  2. 使用docker和jenkins简单部署springboot项目

    安装docker Docker 要求 CentOS 系统的内核版本高于 3.10 uname -r 3.10.0-327.el7.x86_64 安装docker yum -y install dock ...

  3. Docker系列之Jenkins+Git实现流水线部署SpringBoot项目

    1. 概述 本文使用Docker.Jenkins和Gitee持续部署SpringBoot项目,小伙伴们需要提前准备好Docker和Jenkins开发环境,有不清楚如何安装Docker和Jenkins的 ...

  4. Docker 部署 SpringBoot 项目整合 Redis 镜像做访问计数Demo

    Docker 部署SpringBoot项目整合 Redis 镜像做访问计数Demo 最终效果如下 大概就几个步骤 1.安装 Docker CE 2.运行 Redis 镜像 3.Java 环境准备 4. ...

  5. Docker 部署SpringBoot项目不香吗?

    点击上方"方志朋",选择"设为星标" 回复"666"获取新整理的面试文章 作者:流星007 链接:toutiao.com/i68433912 ...

  6. docker 挂载目录_完美解决:Docker部署SpringBoot项目后图片无法访问和上传,3招搞定!...

    以前使用FTP在Linux中使用java -jar xxx.jar部署SpringBoot项目时,由于在项目中指定了主机文件存放路径映射,可以直接访问服务器的文件. 但是最近入坑Docker,将Spr ...

  7. 又到了上云时刻啦!!!阿里云 Docker部署SpringBoot项目 方便测试的部署方式

    又到了上云时刻啦!!!阿里云 Docker部署SpringBoot项目 方便测试的部署方式 部署思路: 具体步骤: 1.打成jar 2.上传到服务器 3.启动JDK容器 4.进入JDK 容器 启动 项 ...

  8. IDEA配置Docker一键部署SpringBoot项目(企业级做法)

    Docker一键部署SpringBoot项目 前言 一.开启Linux的Docker远程访问 1.1 安装vim工具: 1.2 修改`daemon.json`的配置: 1.3 加入配置: 1.4 重新 ...

  9. docker安装以及部署springboot项目

    一.docker安装 1.安装 Docker Engine-Community 安装最新版本的 Docker Engine-Community 和 containerd,或者转到下一步安装特定版本: ...

最新文章

  1. pyqt designer connect无响应_如何用PyQt编写桌面程序,创建并打开播放列表?
  2. 什么是MySQL,以及它的特性
  3. 【LeetCode】LC1672. 最富有客户的资产总量
  4. Delphi中的进制转换
  5. linux看缺省的编译器,修改Linux系统默认编辑器
  6. [ZJOI2016]小星星
  7. java 实体类规范_实体类的规范
  8. 操作系统原理(三)操作系统用户界面
  9. 十大蓝牙耳机排行榜:2021年值得关注的十大蓝牙耳机排名
  10. 80x86汇编小站-公告
  11. (C语言) 用牛顿迭代法求方程2x^3 - 4x^2 + 3x - 6 = 0在1.5附近的根
  12. java web简答题_javaweb简答题
  13. 抖音搬运新技术秒上热门,爆抖神器,效果惊人
  14. 字根校对-中文校对软件
  15. win7声音图标不见,此图标当前处于未活动状态
  16. html 拼图游戏,HTML5人物拼图游戏
  17. 互联网的「中年危机」是什么?程序员对中年被裁有什么误解
  18. (私人收藏)灰蓝绿3种风格的套图图标
  19. 实战!我用Wireshark让你看见 TCP!
  20. 苹果CMS付费视频影视网站模板带完整会员中心模板

热门文章

  1. 求1+2+…+n变态问题的两个很棒的解法
  2. 关系型数据库和非关系型数据库的区别
  3. 《AIOps在360的落地实践》分享实录
  4. caffeine 线程私有的ReadBuffer实现
  5. redis压缩列表ziplist的连锁扩容
  6. Dubbo RESTful风格
  7. libvirt热迁移报Connection refused错误解决办法
  8. rust异步之async、await、future
  9. 用etcd实现比Redis更安全的分布式锁
  10. Laravel最佳实践--API请求频率限制(Throttle中间件)