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/nginx

mkdir -p /root/nginx/html

mkdir -p /root/nginx/log

touch /root/nginx/nginx.conf

touch /root/nginx/log/error.log

touch /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 configuration
    server {
        listen 80;  # 监听HTTP标准端口
        server_name api.test.com;  # 服务器的域名或者ip

        location / {
            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这个平台上与同样爱好人工智能的小伙伴交流分享,一起进步。谢谢大家鸭~~~

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

尾言

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

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Stable-Diffusion的WebUI部署

1、环境准备及安装 1.1、linux环境 # 首先,已经预先安装好了anaconda,在这里新建一个环境 conda create -n sdwebui python3.10 # 安装完毕后,激活该环境 conda activate sdwebui# 安装 # 下载stable-diffusion-webui代码 git clone https:…

高考志愿填报:大学学什么专业比较好呢?

准高三一枚,比较迷茫,求推荐一些专业以后比较好就业,发展前景较好的。听说互联网行业比较吃香,有想过以后做运营这一块,但是不知道应该在大学选什么专业,求推荐吧! 学什么专业好? 这…

ollama webui 11434 connection refused

报错:host.docker.internal:11434 ssl:default [Connection refused] 将/etc/systemd/system/ollama.service中加上如下红框两行 然后 systemctl daemon-reload systemctl restart ollama然后删掉之前的container。 最后 sudo docker run -d -p 4000:8080 --add-…

Vue3学习日记(day2)

目录 前言 注意事项 vite使用 1:控制台vite创建vue 2:使用可视化软件(我使用为vscode)npm安装对应依赖包 3:使用npm脚本或者直接在终端输入命令运行软件后打开生成网址 4:打开网址正常进入网页 rou…

SpringBoot3+Mybatis-Plus+h2数据库,入门Mybatis-Plus

SpringBoot3Mybatis-Plush2数据库,入门Mybatis-Plus mybatis-plus官网地址maven依赖数据库脚本配置文件实体类Mapper入门程序启动程序测试单元测试测试结果 Service层接口service层接口单元测试测试结果 项目结构 mybatis-plus官网地址 https://www.baomidou.com/ …

IP地址冲突检测(Address Conflict Detect)记录

学习目标: 提示:ACD(IP地址冲突检测)原理学习与抓包分析 学习记录: 1、Address Conflict Detection地址冲突检测,简称ACD。RFC 5227提出ACD机制。其中ACD将arp request分为ARP probe和ARP announcement两种; ACD定义…

深入理解 C++ 智能指针

文章目录 一、引言二、 原始指针的问题1、原始指针的问题2、智能指针如何解决这些问题 三、智能指针的类型四、std::shared_ptr1、shared_ptr使用2、shared_ptr的使用注意事项3、定制删除器4、shared_ptr的优缺点5、shared_ptr的模拟实现 五、std::unique_ptr1、unique_ptr的使…

Java_中间件——Redis

Redis 介绍: Redis是一个基于内存的key-value结构数据库(MySQL是通过数据文件方式存储在磁盘上,数据结构是二维表) 特点: 更改配置文件: 使用密码: redis默认是不需要密码的,如果…

spring-data-mongodb版本兼容问题

spring-data-mongodb与mongodb驱动有兼容性问题,不匹配会报NoSuchMethod异常,mongodb的java驱动包在4.0之后由mongodb-java-driver更名为mongodb-driver-sync。 spring-data-mongodb包依赖中有mongodb-driver-core,但缺诸如MongoCollection等…

虚拟机调用摄像头设备一直 select timeout问题的解决

在VMware里面调用v4l2-ctl捕获图像,或者opencv的VideoCapture(0)捕获图像,或者直接调用v4l2的函数,在streamon后,调用select读取数据,均会一直提示select timeout的问题,大概率是由于USB版本的兼容性造成的…

【Oracle】Oracle导入导出dmp文件

文章目录 前言一、什么是dmp?二、imp/impdp、exp/expdp对比及示例1.区别2.imp/impdp对比及示例a. impb. impbp 3.exp/expdp对比及示例a. expb.expdp 3.其他事项 三、执行导入导出前置条件1.创建角色并授权2.创建目录映射 前言 在工作中,经常会遇到需要备…

【Linux】网络配置(静态/动态/手动/nmcli)

目录 一、手动修改网络配置文件:静态 二、手动修改网络配置文件:动态 三、nmcli工具命令修改网络配置文件:静态 四、nmcli工具命令修改网络配置文件:动态 错误排查分析:编辑虚拟网络编辑器不生效 1、排除VMware启…

Excel 将同一分类下的值依次填进分类格右边的格中

表格的第2列是分类,第3列是明细: ABC1S.noAccountProduct21AAAQatAAG32BAAQbIAAW43BAAQkJAAW54CAAQaAAP65DAAQaAAX76DAAQbAAX87DAAQcAAX 需要将同一分类下的值依次填入分类格右边的格中: ABCD1S.noAccountProduct21AAAQatAAG32BAAQbIAAWkJ…

[数据集][目标检测]厨房积水检测数据集VOC+YOLO格式88张2类别

数据集格式:Pascal VOC格式YOLO格式(不包含分割路径的txt文件,仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件) 图片数量(jpg文件个数):88 标注数量(xml文件个数):88 标注数量(txt文件个数):88 标注类别数…

笔记-Python pip配置国内源

众所周知,Python使用pip方法安装第三方包时,需要从 https://pypi.org/ 资源库中下载,但是会面临下载速度慢,甚至无法下载的尴尬,这时,你就需要知道配置一个国内源有多么重要了,通过一番摸索和尝…

[office] 快速提取出Excel 2010单元格括号内的文字信息 #知识分享#经验分享

快速提取出Excel 2010单元格括号内的文字信息 实例演示 ①我们打开一份Excel电子表格,我们要将C列里面括号内的内容提取到D列里面,单击D2单元格,输入下面的函数公式: MID(C2,FIND("(",C2)1,LEN(C2)-FIND("("…

文案策划背后的秘密 | 职场高手养成记

要想在文案策划这个行当里混,首先得对自己的文字功底有足够的信心,那种“文章独步天下”的气势不可或缺。 要是没有这份自信,我建议你还是另寻他路。 要想跨入文案策划的大门,可以从以下几个方面入手: 1. 学习文案基…

4000亿薪酬被驳回!马斯克再次讨薪

特斯拉CEO埃隆马斯克的一笔巨额财产,将在数日后的特斯拉股东大会上,由股东投票决定何去何从。 事情是这样的。 3.5研究测试:hujiaoai.cn 4研究测试:askmanyai.cn Claude-3研究测试:hiclaude3.com 2018年,特…

QT 信号和槽 通过自定义信号和槽沟通 如何自定义槽和信号的业务,让它们自动关联 自定义信号功能

通过信号和槽机制通信,通信的源头和接收端之间是松耦合的: 源头只需要顾自己发信号就行,不用管谁会接收信号;接收端只需要关联自己感兴趣的信号,其他的信号都不管;只要源头发了信号,关联该信号…

常见机器学习的原理及优略势

有监督 一、线性回归(Linear Regression) 1. 算法原理 线性回归(Linear Regression)是一种基本的回归算法,它通过拟合一个线性模型来预测连续型目标变量。线性回归模型的基本形式是:y w1 * x1 w2 * x2 … wn * …