文章目录
一、传统项目(ssh/ssm)
1. tomcat
原理:手动配置tomcat和jdk,将编译文件放入tomcat启动
这种部署方式很早之前已经写过蛮详细的一篇了,从0到有,包括虚拟机的安装、网络设置等。详见
https://blog.csdn.net/weixin_40496191/article/details/107812969
2. docker容器(挂载形式)
原理:一键安装docker,下载tomat镜像,以容器形式启动tomcat,并且将容器内外的文件夹(存放项目class)进行映射挂载。
优点:不需要安装配置tomcat、jdk(一台服务器部署多个应用效果比较明显)。并且可以跟第一种(传统部署)方法一样,实现增量更新。
-
查看虚拟机是否有网络:
ping baidu.com
-
导入密钥:
rpm --import http://mirrors.163.com/centos/RPM-GPG-KEY-CentOS-7
-
linux安装docker:
curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun
-
查看是否安装成功:
docker version
-
启动并设置开机自启动:
systemctl start docker
—>systemctl enable docker
-
新建挂载路径:
mkdir /java/workspace/project1
-
将
war
包丢在挂载路径下(如果是非maven
,将WebRoot
文件夹拷贝到该挂载路径下,并且将WebRoot
名称改为自己项目的名称)。注:我自己的项目名称为MySsh。 -
下载tomcat8镜像:
docker pull tomcat:8
-
查看是否下载成功:
docker images
-
挂载启动镜像:
docker run -p 8080:8080 -v /java/workspace/project1:/usr/local/tomcat/webapps tomcat:8
10.1-p 8080:8080
:端口映射,第一个是宿主机映射端口,第二个是容器端口
10.2-v 目录 : 目录
:挂载,“:”前为宿主机路径,后为容器路径
10.3/usr/local/tomcat/webapps
:容器内tomcat运行文件路径
10.4tomcat:8
:tomcat镜像(服务器) -
访问:
http://192.168.121.11:8080/MySsh/
(访问不到的检查下是否关闭防火墙或者开放端口)
-
更新代码:直接实现增量更新,在
/java/workspace/project1
底下进行编译文件替换即可!
3. docker容器(镜像形式)
原理:一键安装docker
,上传war
包和Dockerfile
文件,打包成镜像,直接启动。
优点:如果有自建镜像仓库(如harbor
),可在本地打包镜像上传至自建仓库,服务器拉取镜像,重启即可。
缺点:必须是maven
项目,不支持非maven
项目。如果没有自建仓库,打包镜像操作在服务器实现,相比于挂载形式,不易实现增量更新(可实现但没必要)。如果每次都实现全量更新,上传war包,效率很慢。
docker
的安装配置详见2.1 - 2.5- 在本地打包项目war包:
mvn clean package
- 编写简单的
DockerFile
文件:继承tomat8
镜像,并且将war包放入tomcat
容器中
#继承tomcat8镜像
from tomcat:8
#将MySsh.war添加到tomat工作目录下
add MySsh.war /usr/local/tomcat/webapps/MySsh.war
- 回到linux,创建文件夹并进入:
mkdir /java/ctDocker
—>cd /java/ctDocker
- 上传文件(可以通过图形界面软件上传,如winscp等,也可以同指令上传)
4.1 安装rz
、sz:yum
install lrzsz -y
或yum groupinstall"Dial-up Network Support" -y
4.2 上传war包和Dockerfile:rz
- 由于我们继承了
tomcat8
,所以我们先下载tomcat8
镜像,这样就可以避免以后每次打包镜像,都单独去下载tomcat8
:docker pull tomcat:8
,如果已经下载则忽略。 - 查看是否下载成功:docker images
- 查看文件:
ls
- 开始打包镜像:
docker build . -t myssh:v1.1
(myssh:v1.1
是自定义的镜像名称+版本) - 打包完查看:
docker images
- 启动镜像:
docker run -p 8080:8080 myssh:v1.1
- 访问:
http://192.168.121.11:8080/MySsh/
(访问不到的检查下是否关闭防火墙或者开放端口)
- 更新代码:需要上传war文件,重新打包镜像,运行。
注:非要实现增量更新,可以进入容器,将容器内部的tomcat底下的编译文件替换成新的编译文件。然后保存镜像,重启。个人认为蛮麻烦的,也没必要。
二、springboot项目
1. 传统部署
部署方式也是打包war编译文件,放在tomcat跑,如1.1、1.2,这里就不重复演示了。
2. 命令行启动
原理:配置jdk
环境、将jar
包上传linux
,命令行启动。
优点:配置简单
- 创建文件夹:
mkdir /java/springboot
—>/java/springboot
- 上传
war
包 - 安装
jdk8
:https://www.oracle.com/java/technologies/javase/javase-jdk8-downloads.html
3.1 创建文件夹:/opt/src
3.2 将jdk-8u291-linux-x64.tar.gz
上传到/opt/src
3.3 创建文件夹:mkdir /usr/java
3.4 jdk解压到/usr/java:tar -xvf /opt/src/jdk-8u291-linux-x64.tar.gz -C /usr/java
3.5 设置软连接:ln -s /usr/java/jdk1.8.0_291/ /usr/java/jdk
-----注:类似版本有可能变动的组件,最好都设置个软连接,避免版本变动频繁修改配置文件 - 设置环境变量:
vi /etc/profile
,在最后加上这三行
export JAVA_HOME=/usr/java/jdk
export PATH=$JAVA_HOME/bin:$JAVA_HOME/bin:$PATH
export CLASSPATH=$CLASSPATH:$JAVA_HOME/lib:$JAVA_HOME/lib/tools.jar
-
重新读取配置文件:
source /etc/profile
-
查看jdk配置:
java -version
-
启动项目:
java -jar /java/springboot/sboot-0.0.1-SNAPSHOT.jar
(参数自行设置,想要看起来优雅点,自行写脚本启动) -
访问项目:
http://192.168.121.11:8080/hello
3. docker容器(镜像形式)
部署方式如1.3,唯一不同的是镜像文件不需要在继承tomcat
了,因为springboot
内嵌服务器,可以直接启动。
- 编写
Dockerfile
文件
#继承java:8
FROM java:8
#作者
MAINTAINER zzk
#/tmp目录用来持久化到 Docker 数据文件夹,因为 Spring Boot 使用的内嵌 Tomcat 容器默认使用/tmp作为工作目录
VOLUME /tmp
#将jar包添加到容器并且改名字为zzk.jar
ADD sboot-0.0.1-SNAPSHOT.jar zzk.jar
#运行jar包
RUN bash -c 'touch /zzk.jar'
#容器启动时要执行的命令
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/zzk.jar"]
mkdir /java/springbootDocker
-->cd /java/springbootDocker
- 上传
jar
包和Dockerfile
文件 - 下载java8:
docker pull java:8
(可忽略,在打包镜像的会自动下载,为了后续打包方便,这里统一下载) - 打包镜像:
docker build . -t sboot:v1.1
- 查看镜像:docker images
- 启动:
docker run -p 8080:8080 sboot:v1.1
- 访问:
http://192.168.121.11:8080/hello
成功!!