Docker快速部署springboot项目

本文概述

本文主要介绍了怎么将springboot项目打包为docker镜像,并如何在后端服务器上使用docker快速部署springboot应用和nginx应用。

一、打包springboot项目

1、复制原来的application.yml文件然后重命名为application-pro.yml文件,将application-pro.yml里面的数据库配置等修改为实际生产环境中的配置。

2、点击IDEA右侧的Maven按钮,会弹出Maven的管理面板

然后先双击clean,然后在双击package,等待打包完成。

打包完成后,在target目录下可以找到打包好的jar包和original文件

然后将这两个文件上传到服务器任意目录下,待用。

3、新建一个Dockerfile文件,没有后缀,名字只能是Dockerfile

然后编写Dockerfile配置,其中的--spring.profiles.active=pro是指启用我们之前配置的application-pro.yml文件。

编写完成后,将Dockerfile文件上传到跟之前上传的jar包同一个目录下

4、使用CD指令,进入jar包,Dockerfile文件的目录下

cd /root/test

然后将jar包,打包成镜像

docker built -t testapp:v0.0.1.2 .

其中的testapp是镜像名,v0.0.1.2是版本号,注意不要漏写了最后的 .

然后我们查看一下镜像列表,看看我们有没有成功打包成镜像

docker images

如果镜像名出现在列表里面说明,我们的打包工作就完成了

二、创建网络

我们使用命名去创建一个网络,以便宿主机内在同一个网络下的各个容器能够相互通信

docker network create --driver bridge test_net

其中的test_net是网络名,可以自行修改

三、部署springboot应用

docker run -d --name test --network test_net -p 8080:8080 testapp:V0.0.1.2

其中 test是容器名 test_net是网络名 testapp是镜像名

然后我们查看下正在运行的容器,看我们新创建的容器有没有正常运行

docker ps

如上图所示就是正在运行了。

四、部署nginx

先使用命令在宿主机创建出保存nginx配置的文件夹和文件

mkdir -p /root/nginxmkdir -p /root/nginx/htmlmkdir -p /root/nginx/logtouch /root/nginx/nginx.conftouch /root/nginx/log/error.logtouch /root/nginx/log/access.log

然后我们对宿主机上的nginix.conf进行配置

# 用户配置
user nginx;
worker_processes auto;#工作线程数# 错误日志和进程ID文件的路径
error_log /root/nginx/error.log;
pid /run/nginx.pid;# 工作模式和连接数设置
events {worker_connections 1024;
}# HTTP 服务器配置
http {# 包含 mime 类型映射include /etc/nginx/mime.types;default_type application/octet-stream;# 日志设置log_format main '$remote_addr - $remote_user [$time_local] "$request" ''$status $body_bytes_sent "$http_referer" ''"$http_user_agent" "$http_x_forwarded_for"';access_log /var/log/nginx/access.log main;# 发送配置sendfile on;tcp_nopush on;tcp_nodelay on;keepalive_timeout 65;types_hash_max_size 2048;# 包含其他配置文件include /etc/nginx/conf.d/*.conf;# Server configurationserver {listen 80;  # 监听HTTP标准端口server_name api.test.com;  # 服务器的域名或者iplocation / {proxy_pass http://test:8080;  # 将请求转发到后端服务proxy_set_header Host $host;proxy_set_header X-Real-IP $remote_addr;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;proxy_set_header X-Forwarded-Proto $scheme;}}
}

这是一份最基础的nginx配置,如有其它需求请自行配置,这里我们只用修改server里面的listen(监听端口号),server_name(这里写你后端服务器的ip,或者域名),proxy_pass(将test替换为你的springboot镜像名和对应的端口号)

然后创建并运行nginx的容器

 docker run -d --name nginx --network test_net -p 80:80 -p 443:443 -v /root/nginx/html:/user/share/nginx/html -v /root/nginx/nginx.conf:/etc/nginx/nginx.conf -v /root/nginx/log/error.log:/var/log/nginx/error.log -v /root/nginx/log/access.log:/var/log/nginx/access.log --privileged nginx:latest

这里只用将网络修改为跟springboot应用同一个网络就行了

至此后端服务部署完成,因为数据库用的是专门的一台数据库服务器所以这里没有运行mysql的docker。(完结撒花~)

 作者介绍

作者本人是一名人工智能炼丹师,目前在实验室主要研究的方向为生成式模型,对其它方向也略有了解,希望能够在CSDN这个平台上与同样爱好人工智能的小伙伴交流分享,一起进步。谢谢大家鸭~~~

 如果你觉得这篇文章对您有帮助,麻烦点赞、收藏或者评论一下,这是对作者工作的肯定和鼓励。  

尾言

 如果您觉得这篇文章对您有帮忙,请点赞、收藏。您的点赞是对作者工作的肯定和鼓励,这对作者来说真的非常重要。如果您对文章内容有任何疑惑和建议,欢迎在评论区里面进行评论,我将第一时间进行回复。 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/25771.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【数据结构】图之邻接矩阵代码实现与dfs、bfs

一、图的相关概念 图的相关概念包括顶点、边、有向图和无向图等。图是计算机科学中一个核心的数据结构,用于描述对象之间的关系。它由顶点(节点)的集合和连接这些顶点的边的集合组成。具体分析如下: 顶点:图中的基本构…

linux 关于jq的安装和使用

文章目录 前言 一、jq是什么? 二、安装方法 1.在线安装 2.离线安装 三、使用方法 1. 读取json字符串并解析 2.读取json文件并解析 3.遍历json数组,查询姓名为Bob学生的年龄 总结 前言 今天要写一个自定义的脚本,涉及到对json数据的解…

SOA的设计模式_2.企业服务总线模式

1.企业服务总线(|Enterprise Service Bus,ESB) 在企业基于SOA实施EAI、B2B和BMP的过程中,如果采用点对点的集成方式存在着复杂度高,可管理性差,复用度差和系统脆弱等问题。企业服务总线(…

【微信小程序】事件传参的两种方式

文章目录 1.什么是事件传参2.data-*方式传参3.mark自定义数据 1.什么是事件传参 事件传参:在触发事件时,将一些数据作为参数传递给事件处理函数的过程,就是事件传参 在微信小程序中,我们经常会在组件上添加一些自定义数据,然后在…

定个小目标之刷LeetCode热题(12)

这是一道简单题,使用位运算中的异或运算即可,异或运算有以下性质: 1、任何数异或 0 结果仍然是原来的数,即 a⊕0a 2、任何数和其自身做异或运算,结果是 0 所以我们只需要让数组里的所有元素进行异或运算得到的结果就…

oracle的bitmap索引是什么

Oracle的Bitmap索引是一种特殊的索引类型,主要用于处理那些数值稀疏(low-cardinality,低基数)的字段,特别是那些值不经常改变的字段。以下是关于Bitmap索引的详细解释: 定义: Bitmap索引是一种…

Python实现删除Word文档中带有“指定内容”的段落文本(7)

前言 本文是该专栏的第7篇,后面会持续分享Python办公自动化干货知识,记得关注。 在处理word文档内容的时候,有时候我们需要一个干净整洁的文本内容。比如说,如下图所示的情况: 在处理上述word文档内容的时候,我们希望将文本底部的“下载链接”以及“附件信息”两个段落,…

持续总结中!2024年面试必问 20 道分布式、微服务面试题(八)

上一篇地址:持续总结中!2024年面试必问 20 道分布式、微服务面试题(七)-CSDN博客 十五、Docker和Kubernetes有什么区别? Docker 和 Kubernetes 是两个在容器化领域中非常流行的工具,但它们在功能和用途上…

每日算法——归并排序

什么是归并排序 归并排序是一种分治算法。它将数组不断地分成两半,对每一半进行排序,然后再将排序好的两半合并起来。通过不断重复这个过程,最终得到完全排序的数组。 归并排序的注意点: 空间复杂度:归并排序需要额…

MQ解决的问题

系统中MQ能解决哪些问题? 1.不同语言的程序使用MQ通信 2.分布式,微服务,之间的通信,实现服务质检解耦 3.高并发实现销峰作用 4.实现异步,提高用户体验。

浅谈AI-在公司资金管理中的应用

现在,随着人工智能(AI)技术的快速发展,越来越多的企业开始将其应用到资金管理中。AI在这方面不仅提高了效率和准确性,还大大减少了人为错误和操作风险。下面是AI在企业资金管理中的几种主要应用。 1. 预测未来资金流&…

Mysql使用中的性能优化——搭建Mysql的监测服务

大纲 环境安装配置Mysql安装设置root密码新增远程访问账户修改绑定地址重启 新增 MySQL Server Exporter 用户 安装启动mysqld_exporter安装启动新增配置启动直接启动以Service形式启动 安装启动Prometheus创建用户下载并解压修改配置启动 安装启动grafana安装启动 测试参考资料…

[数据集][图像分类]黑色素瘤分类数据集10015张7类别

数据集类型:图像分类用,不可用于目标检测无标注文件 数据集格式:仅仅包含jpg图片,每个类别文件夹下面存放着对应图片 图片数量(jpg文件个数):10015 分类类别数:7 类别名称:[“0”,“1”,“2”,“3”,“4”,…

【博士每天一篇文献-综述】Modularity in Deep Learning A Survey

阅读时间:2023-12-8 1 介绍 年份:2023 作者:孙浩哲,布朗克斯医疗卫生系统 会议: Science and Information Conference 引用量:4 论文主要探讨了深度学习中的模块化(modularity)概念…

软件测试--Mysql快速入门

文章目录 软件测试-mysql快速入门sql主要划分mysql常用的数据类型sql基本操作常用字段的约束:连接查询mysql内置函数存储过程视图事务索引 软件测试-mysql快速入门 sql主要划分 sql语言主要分为: DQL:数据查询语言,用于对数据进…

传感器展会|2024厦门传感器与应用技术展览会

传感器展会|2024厦门传感器与应用技术展览会 时间:2024年11月1-3日 地点:厦门国际会展中心 XISE EXPO展会介绍: 2024中国(厦门)国际传感器与应用技术展览会将于2024年11月1-3日在厦门国际会展中心举行&#xf…

2024浙江省三支一扶报名流程!超详细图解!

2024浙江省三支一扶报名流程!超详细图解! 浙江省高校毕业生“三支一扶”报名即将开始,准备报考的同学们做好准备: 🔴重点时间安排: 1、网络报名:6月11日9:00至6月18日17:00 2、资格审核&…

Selenium with Python Behave(BDD)

一、简介 Python语言的行为驱动开发,Behavior-driven development,简称BDD. "Behavior-driven development (or BDD) is an agile software development technique that encourages collaboration between developers, QA and non-technical or bu…

maven多模块项目搭建

文章目录 创建方式创建父项目创建子模块 目录结构示例父模块模块A模块B(并在模块B中引入模块A) 注意事项 创建方式 创建父项目 #创建文件夹后,进入目录,执行以下命令 PS D:\demo> mvn archetype:generate #将输出很多模板&am…

5 个你不知道的隐藏 CSS 属性

层叠样式表 (CSS) 是网页设计的骨架,它可以帮助我们轻松的设置网页的样式和格式。虽然大多数的 CSS 属性,例如颜色、字体大小和边距都被大家熟知,但还有许多鲜为人知的属性可以帮助我们设计添加功能。在这篇文章中,我们将介绍 5 个…