程序员scholar 程序员scholar
首页
  • Java 基础

    • JavaSE
    • JavaIO
    • JavaAPI速查
  • Java 高级

    • JUC
    • JVM
    • Java新特性
    • 设计模式
  • Web 开发

    • Servlet
    • Java网络编程
  • Web 标准

    • HTML
    • CSS
    • JavaScript
  • 前端框架

    • Vue2
    • Vue3
    • Vue3 + TS
    • 微信小程序
    • uni-app
  • 工具与库

    • jQuery
    • Ajax
    • Axios
    • Webpack
    • Vuex
    • WebSocket
    • 第三方登录
  • 后端与语言扩展

    • ES6
    • Typescript
    • node.js
  • Element-UI
  • Apache ECharts
  • 数据结构
  • HTTP协议
  • HTTPS协议
  • 计算机网络
  • Linux常用命令
  • Windows常用命令
  • SQL数据库

    • MySQL
    • MySQL速查
  • NoSQL数据库

    • Redis
    • ElasticSearch
  • 数据库

    • MyBatis
    • MyBatis-Plus
  • 消息中间件

    • RabbitMQ
  • 服务器

    • Nginx
  • Spring框架

    • Spring6
    • SpringMVC
    • SpringBoot
    • SpringSecurity
  • SpringCould微服务

    • SpringCloud基础
    • 微服务之DDD架构思想
  • 日常必备

    • 开发常用工具包
    • Hutoll工具包
    • IDEA常用配置
    • 开发笔记
    • 日常记录
    • 项目部署
    • 网站导航
    • 产品学习
    • 英语学习
  • 代码管理

    • Maven
    • Git教程
    • Git小乌龟教程
  • 运维工具

    • Docker
    • Jenkins
    • Kubernetes
  • 算法笔记

    • 算法思想
    • 刷题笔记
  • 面试问题常见

    • 十大经典排序算法
    • 面试常见问题集锦
关于
GitHub (opens new window)
首页
  • Java 基础

    • JavaSE
    • JavaIO
    • JavaAPI速查
  • Java 高级

    • JUC
    • JVM
    • Java新特性
    • 设计模式
  • Web 开发

    • Servlet
    • Java网络编程
  • Web 标准

    • HTML
    • CSS
    • JavaScript
  • 前端框架

    • Vue2
    • Vue3
    • Vue3 + TS
    • 微信小程序
    • uni-app
  • 工具与库

    • jQuery
    • Ajax
    • Axios
    • Webpack
    • Vuex
    • WebSocket
    • 第三方登录
  • 后端与语言扩展

    • ES6
    • Typescript
    • node.js
  • Element-UI
  • Apache ECharts
  • 数据结构
  • HTTP协议
  • HTTPS协议
  • 计算机网络
  • Linux常用命令
  • Windows常用命令
  • SQL数据库

    • MySQL
    • MySQL速查
  • NoSQL数据库

    • Redis
    • ElasticSearch
  • 数据库

    • MyBatis
    • MyBatis-Plus
  • 消息中间件

    • RabbitMQ
  • 服务器

    • Nginx
  • Spring框架

    • Spring6
    • SpringMVC
    • SpringBoot
    • SpringSecurity
  • SpringCould微服务

    • SpringCloud基础
    • 微服务之DDD架构思想
  • 日常必备

    • 开发常用工具包
    • Hutoll工具包
    • IDEA常用配置
    • 开发笔记
    • 日常记录
    • 项目部署
    • 网站导航
    • 产品学习
    • 英语学习
  • 代码管理

    • Maven
    • Git教程
    • Git小乌龟教程
  • 运维工具

    • Docker
    • Jenkins
    • Kubernetes
  • 算法笔记

    • 算法思想
    • 刷题笔记
  • 面试问题常见

    • 十大经典排序算法
    • 面试常见问题集锦
关于
GitHub (opens new window)
npm

(进入注册为作者充电)

  • 高性能服务器 - Nginx

  • 项目部署

    • 带你从0认识云服务器
    • Docker部署SpringBoot项目
      • 1. 前言
      • 2. 实战步骤
        • 2.1 编写测试接口
        • 2.2 使用Maven打jar包
        • 1.使用package命令打包
        • 2. 打包成功
        • 3. 查看jar包
        • 4.启动jar包进行测试
        • 2.3 编写Dockerfile文件内容
        • 2.4 把jar包以及Dockerfile上传到Linux服务器
        • 2.4 生成镜像
        • 2.5 后台启动容器
        • 2.6 测试
      • 3. 总结
    • 华为云部署前后端分离项目
    • 腾讯云服务器部署Hexo博客
    • 宝塔部署前后端分离项目
    • Spring Boot应用打包与部署
    • 一键部署文件到远程服务器
    • Docker部署项目+环境安装
  • 服务器
  • 项目部署
scholar
2024-01-17
目录

Docker部署SpringBoot项目

# 1. 前言

笔者开发环境: 华为云服务器 + IDEA2023 + JDK1.8 + Maven3.8。

# 2. 实战步骤

# 2.1 编写测试接口

打开我们的IDEA创建一个简单的SpringBoot项目,编写TestController,编写一个简单的测试接口。

package com.scholar.demo02.controller;

import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

/**
 * @author : scholar
 * @version 1.0
 * @date 2023-10-17 14:15
 * @description : 测试
 */
@RestController
public class TestController {

    @RequestMapping("/test")
    public String test(){
        
        return "这是用来测试SpringBoot接口部署到服务器的接口测试!";
    }
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20

# 2.2 使用Maven打jar包

# 1.使用package命令打包

image-20231017142102923

# 2. 打包成功

看到下面BUIDL SUCCES 就说明打包成功了

image-20231017142404696

# 3. 查看jar包

可以在target目录看到我们的jar包

image-20231017142457929

# 4.启动jar包进行测试

java -jar jar包名称(填写你自己的jar包名称)
1

image-20231017142739915

启动成功,浏览器访问ip + 端口号 + 访问路径即可访问。

​ image-20231017142855477

访问成功!

# 2.3 编写Dockerfile文件内容

这里笔者使用的是JDK11

FROM openjdk:11 # FROM: 基础镜像,基于jdk8镜像开始

COPY *.jar /app.jar  # COPY: 将应用的配置文件也拷贝到镜像中。

CMD ["--server.port=8400"]

EXPOSE 8400  # EXPOSE:声明端口
 
ENTRYPOINT ["java","-jar","/app.jar"]  
# ENTRYPOINT:docker启动时,运行的命令,这里容器启动时直接运行jar服务。
1
2
3
4
5
6
7
8
9
10

# 2.4 把jar包以及Dockerfile上传到Linux服务器

上传jar包和dockerfile文件到Linux服务器上去。

这里笔者选择的是Finalshell + 华为云服务器,大家可以自行选择。

在software目录里面创建一个test目录

cd /opt/software/
mkdir test
1
2

注意: software这个目录是笔者平时存放软件的地方,大家没有的话可以自行创建。

把jar包和dockerfile文件上传到test目录

image-20231017143614515

# 2.4 生成镜像

目录切换到test目录并查看

image-20231017143654734

文件已上传完毕,可以进行生产镜像了。

注意: 必须这两个东西都在一个文件下,才可以。

  • docker bulid 是打包命令
  • -t − 给镜像加一个Tag
  • 后面跟的 test 就是为这个镜像取的名字
  • . 小数点表示当前目录,即Dockerfile所在目录
docker build -t test .  
1

看到下面说明镜像已经生成完毕。

image-20231017143832087

# 2.5 后台启动容器

使用命令查看我们生成的镜像

docker images
1

image-20231017143952774

确认没问题之后我们开始后台启动容器。

docker run -d -p 8400:8400 --name test test
1
  • -d 是后台运行
  • -p 8400:8400是端口映射
  • --name 取名字
  • 最后跟的 test 是我打包好的镜像名称。

image-20231017144513816

到这里说明我们的容器已经正常运行了。

# 2.6 测试

浏览器访问ip + 端口号 + 访问路径即可访问。

image-20231017144552622

大功告成!

# 3. 总结

以上便是本文的全部内容,本人才疏学浅,文章有什么错误的地方,欢迎大佬们批评指正!我是scholar,一个在互联网行业的小白,立志成为更好的自己。

如果你想了解更多关于scholar,可以关注公众号-程序员scholar,后面文章会首先同步至公众号。

公众号封面

编辑此页 (opens new window)
上次更新: 2024/12/28, 18:32:08
带你从0认识云服务器
华为云部署前后端分离项目

← 带你从0认识云服务器 华为云部署前后端分离项目→

Theme by Vdoing | Copyright © 2019-2025 程序员scholar
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式