javaWeb后端开发之Linux项目部署3和Docker部署1

1.前端项目部署

  • 将nginx的安装目录的html中的静态资源文件先删除掉
  • 将静态资源文件,全部上传到nginx安装目录下的 html 目录中

  • 修改资料中提供的 nginx.conf 配置文件,将其上传到nginx安装目录下的 conf 目录中

  • 重新加载nginx服务的配置文件

sbin/nginx -s reload

  • 再次访问nginx (可能会存在浏览器缓存, 可以按Ctrl+F5, 强制刷新清理缓存)

nignx服务常见操作指令

启动:sbin/nginx

重载:sbin/nginx -s reload

停止:sbin/nginx -s stop

2.后端项目部署

环境准备:

再准备一份文件 application.yml 将里面的配置的mysql的ip地址及相关配置信息修改一下(配置Linux上安装的MySQL的信息):

改造完毕之后,可以在本地的idea中先启动当前项目,然后访问一下,看看工程是否正常访问

打包部署:

  • 执行 package 指令,进行打包操作,将当前的springboot项目,打成一个jar包(跳过测试)

  • 在Linux服务器上创建一个目录,将jar包上传到服务器

mkdir -p /usr/local/app

  • 通过java命令,启动项目

/usr/local/app cd /usr/local/app

java -jar tlias-web-management-0.0.1-SNAPSHOT.jar

  • 项目启动之后,就可以打开浏览器进行测试

阿里云OSS密钥配置:

由于在开发的时候,将访问阿里云OSS的AccessKeyId,AccessKeySecret都配置在了系统的环境变量中了。那现在项目部署到了Linux服务器中,调用阿里云OSS进行文件上传时,程序就会获取Linux系统中的环境变量。所以,需要将AccessKeyId,AccessKeySecret配置为Linux系统的环境变量

  • 查看Windows系统之前配置的环境变量

echo %OSS_ACCESS_KEY_ID%

echo %OSS_ACCESS_KEY_SECRET%

将上述自己的 AccessKeyId 与 AccessKeySecret 复制出来,然后在linux系统中配置环境变量

  • 执行如下命令

echo "export OSS_ACCESS_KEY_ID=自己阿里云OSS账号的 OSS_ACCESS_KEY_ID" >> /etc/profile

echo "export OSS_ACCESS_KEY_SECRET=自己的阿里云OSS账号的OSS_ACCESS_KEY_SECRET" >> /etc/profile

source /etc/profile

  • 执行完毕后,将finalShell的窗口关闭掉,重新打开一个新窗口(让环境变量生效),重新运行项目测试

后台运行:

  • 后台运行程序

nohup java -jar tlias-web-management-0.0.1-SNAPSHOT.jar &> tlias.log &

服务运行之后, 所有的日志信息都会输出到 tlias.log 文件中

  • 停止服务

nohup命令说明:

用于不挂断地运行指定命令,退出终端不会影响程序的运行

语法:nohup command [ args ... ] [&]

参数说明:

command:要执行的命令

args:一些参数,可以指定输出文件

&:让命令在后台运行

Docker项目部署

1.快速入门

部署MySQL

使用Docker安装,仅仅需要一步即可,在命令行输入下面的命令:

MySQL安装完毕!通过任意客户端工具即可连接到MySQL

这里下载的不是安装包,而是镜像

镜像中不仅包含了MySQL本身,还包含了其运行所需要的环境、配置、系统级函数库

因此它在运行时就有自己独立的环境,就可以跨系统运行,也不需要手动再次配置环境了

这套独立运行的隔离环境我们称为容器

Docker安装软件的过程,就是自动搜索下载镜像,然后创建并运行容器的过程

总结:

Docker本身包含一个后台服务,我们可以利用Docker命令告诉Docker服务,帮助我们快速部署指定的应用。Docker服务部署应用时,首先要去搜索并下载应用对应的镜像,然后根据镜像创建并允许容器,应用就部署完成了

命令解读:

docker run -d :创建并运行一个容器,-d则是让容器以后台进程运行

--name mysql : 给容器起个名字叫mysql,你可以叫别的

-p 3307:3306 : 设置端口映射

  • e TZ=Asia/Shanghai : 配置容器内进程运行时的一些参数

mysql:8 :设置镜像名称,Docker会根据这个名字搜索并下载镜像

镜像的名称不是随意的,而是要到DockerRegistry中寻找,镜像运行时的配置也不是随意的,要参考镜像的帮助文档,这些在DockerHub网站或者软件的官方网站中都能找到

2.Docker基础

常见命令:

注:

默认情况下,每次重启虚拟机我们都需要手动启动Docker和Docker中的容器。通过命令可以实现开机自启:

systemctl enable docker Docker开机自启

docker update --restart=always 容器名/容器id Docker容器开机自启

演示:(以Nginx为例)

3.数据卷:

程序运行产生的数据、程序运行依赖的配置都应该与容器解耦

数据卷(volume)是一个虚拟目录,是容器内目录与宿主机目录之间映射的桥梁。

以Nginx为例,我们知道Nginx中有两个关键的目录:

html:放置一些静态资源;conf:放置配置文件

要让Nginx代理静态资源,最好是放到html目录;

要修改Nginx的配置,最好是找到conf下的nginx.conf文件

创建了两个数据卷:confhtml

Nginx容器内部的conf目录和html目录分别与两个数据卷关联

而数据卷conf和html分别指向了宿主机的/var/lib/docker/volumes/conf/_data目录和/var/lib/docker/volumes/html/``_data目录

所以容器内的confhtml目录就 与宿主机的confhtml目录关联起来,我们称为挂载

命令:

注:

容器与数据卷的挂载要在创建容器时配置,对于创建好的容器,是不能设置数据卷的。而且创建容器的过程中,数据卷会自动创建

演示(nginx的html目录挂载):

演示(MySQL的匿名数据卷):

第一是.Config.Volumes部分:

发现这个容器声明了一个本地目录,需要挂载数据卷,但是数据卷未定义。这就是匿名卷

.Mounts部分:

Name:数据卷名称。由于定义容器未设置容器名,这里的就是匿名卷自动生成的名字,一串hash值。

Source:宿主机目录

Destination : 容器内的目录

相关推荐
Jtti3 分钟前
怎么判断攻击者主要在打高防服务器哪个端口或协议
运维·服务器·网络
中讯慧通3 分钟前
微型无人机通信模块:低空链路核心,保障飞行与传输全程稳定
服务器·人工智能·机器人·无人机
羑悻的小杀马特7 分钟前
拆解下一代LLMOps:从“能用”到“好用”,中间只隔了一个智能路由!
人工智能·docker·自动化·agent
六月的可乐8 分钟前
【干货】小程序虚拟瀑布流探索小结
前端·react.js·小程序
载数而行5208 分钟前
Linux 10 防火墙
linux
神仙别闹10 分钟前
基于C语言处理机调度算法的实现
服务器·c语言·算法
草莓熊Lotso14 分钟前
【Linux网络】深入理解 TCP 协议(二):序号机制、流量控制与连接管理
linux·运维·服务器·网络·c++·tcp/ip
techdashen15 分钟前
Rust 项目管理动态 — 2026 年 3 月
前端·人工智能·rust
云飞云共享云桌面1 小时前
SolidWorks服务器+云飞云共享云桌面 = 10人共享方案
linux·运维·服务器·网络·制造
Full Stack Developme9 小时前
JVM 与 Linux 交互的核心原理
linux·运维·jvm