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 : 容器内的目录

相关推荐
Bert.Cai1 小时前
Linux print命令详解
linux·运维·服务器
拉里呱唧1 小时前
在线可视化HTML编辑器横评:8款拖拽式工具的实测对比
前端·编辑器·html
AI云原生1 小时前
容器网络模型与服务发现:从踩坑到精通,Kubernetes 网络问题排查全指南
服务器·网络·云原生·容器·kubernetes·云计算·服务发现
石小千1 小时前
Docker-排查占用磁盘空间大问题
运维·docker·容器
lihaozecq1 小时前
Agent 开发 Todo 机制设计,让 Agent 拥有规划能力
前端·agent·ai编程
仙柒4151 小时前
Docker 网络
运维·docker·容器
Harm灬小海1 小时前
【云计算学习之路】学习Centos7系统:服务搭建(NFS)
linux·运维·服务器·学习·云计算
Harm灬小海1 小时前
【云计算学习之路】学习Centos7系统-权限管理
linux·运维·服务器·学习·云计算
木雷坞1 小时前
vLLM 服务启动慢排查:NAS 模型目录、Docker 镜像和 GPU Runtime
docker·容器·vllm