本篇做为SpringBoot2.1版本的我的开发框架 子章节,请先阅读SpringBoot2.1版本的我的开发框架再次阅读本篇文章css
后端项目地址:SpringBoot2.1版本的我的应用开发框架html
前端项目地址:ywh-vue-admin前端
预览地址:www.zandy.topvue
在正式部署到服务器以前,对项目进行一些修改,而且须要对服务器进行一些安装必要的软件,例如mysql、redis、nginx等等,由于是用Docker来启动的,因此还须要安装Dockerjava
部署环境:node
由于咱们后端是开的8082端口,因此咱们要在阿里云的安全组中把8082端口开启。mysql
项目在打包时遇到些许错误。我已经改正了,这里就带一下,不着重记载。若是是clone的我项目,直接进行打包部署环节就能够了。webpack
在common模块的BaseController类中由于没有肯定返回的类型,这个是由于这个是通用的一个基础控制器,因此返回类型有多是任何类型,编译器认为不安全吧应该是,因此在打包时也出现了警告,在类上添加下面的注解,让编译器不要检查。nginx
@SuppressWarnings("unchecked")
复制代码
在cache模块的RedisCacheConfig类中有引用加了泛型,而new出来的没有加泛型而报的警告git
RedisTemplate<String, Object> template = new RedisTemplate();
# 修改成
RedisTemplate<String, Object> template = new RedisTemplate<>();
复制代码
删除除了core模块其余模块的启动类和测试类
删除除了core模块其余模块pom文件的 < build > 标签
在前端打包后打开首页会出现空白页面,这是由于路径问题找不到css和js文件,修改config->index.js中的
# /表明的是根目录
assetsPublicPath: '/'
# 修改成当前目录
assetsPublicPath: './'
复制代码
在npm run build时报了下图中错误,查阅资料说是版本不匹配,
打包能够有两种方式进行打包,一种是本地打包好之后把jar包上传到服务器,一种是把项目放到服务器上后在服务器中进行打包。
注意:在正式打包开始以前,要把数据库链接的IP地址、logback.xml的日志文件地址、redis的链接地址都要修改成本身服务器的相应IP和地址。数据库链接地址我填的是内网地址,redis的我填的公网IP,其实这里挺让我纳闷的,明明redis和项目都在本机上,为何不能用内网ip或者127.0.0.1链接呢,是个问题哈。
使用IDEA编辑器中右边的Maven Projects先点击clean没有报错后点击package,最上面的箭头点击后表明打包过程当中跳过test阶段,记得点上。
两个都点击后没有报错,正常打包成功会在core模块的target文件下有咱们的jar包了,以artifactId和版本号命名。
建立Dockerfile文件,没有后缀名,构建项目的镜像,内容以下
# 基础镜像 表示基镜像是java8
FROM java:8
# 表示 指定临时文件目录为/tmp。其效果是在主机 /var/lib/docker 目录下建立了一个临时文件,并连接到容器的/tmp。该步骤是可选的
VOLUME /tmp
# 表示将jar包添加到镜像中,并重命名app.jar
ADD core-0.0.1-SNAPSHOT.jar app.jar
RUN sh -c 'touch /app.jar'
# 表明的是jvm的参数,若是有须要能够写在这里
ENV JAVA_OPTS=""
# 表示启动时运行 java -jar app.jar
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]
复制代码
把jar包和Dockerfile文件上传到咱们的服务器中,位置本身定,经过 rz 命令上传,这两个文件在同一个文件夹中就能够了。
$ rz
# 在上传后的文件夹中开始构建,指定了镜像的名字为ywh-frame
$ docker build -t ywh-frame .
# 等待构建成功后,可经过命令查看
$ docker images
# 运行此镜像文件
$ docker run -d --name ywh-frame --restart always -p 8082:8082 -v /ywh/projectwork/spring/logs:/usr/local/logs ywh-frame
复制代码
可使用命令查看日志,看是否正常启动了,若是有异常信息,则须要根据具体的异常信息去改正。
这种方式比较麻烦,并且须要在Liunx安装一些必要的环境,不推荐使用,不过仍是要记录。
安装java运行时环境和maven
须要把core模块的pom文件的打包插件换成docker-maven的插件
<plugin>
<groupId>com.spotify</groupId>
<artifactId>docker-maven-plugin</artifactId>
<version>1.2.0</version>
<configuration>
<imageName>${project.artifactId}</imageName>
<dockerDirectory>${project.build.outputDirectory}</dockerDirectory>
<resources>
<resource>
<targetPath>/</targetPath>
<directory>${project.build.directory}</directory>
<include>${project.build.finalName}.jar</include>
</resource>
</resources>
</configuration>
</plugin>
复制代码
<imageName></imageName> 镜像的名字
<dockerDirectory></dockerDirectory> Dockerfile文件的位置
<directory></directory> target目录的位置
<include></include> 打包项目后的jar包名字
复制代码
建立Dockerfile文件,没有后缀名,把这个文件放在core模块下的resource目录下便可,也能够放在其余的目录下,只须要在上面的标签指定位置就好了。
# 基础镜像 表示基镜像是java8
FROM java:8
# 表示 指定临时文件目录为/tmp。其效果是在主机 /var/lib/docker 目录下建立了一个临时文件,并连接到容器的/tmp。该步骤是可选的
VOLUME /tmp
# 表示将jar包添加到镜像中,并重命名app.jar
ADD core-0.0.1-SNAPSHOT.jar app.jar
RUN sh -c 'touch /app.jar'
# 表明的是jvm的参数,若是有须要能够写在这里
ENV JAVA_OPTS=""
# 表示启动时运行 java -jar app.jar
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]
复制代码
把项目上传到服务器,只上传每一个模块的src和pom文件就行了
#找到项目所在目录
$ cd /ywh/projectwork/spring/ywh-frame
#根目录下进行 install
$ mvn clean install package -Dmaven.test.skip=true
#进入core模块下
$ cd ywh-starter-core/
#执行maven命令生成jar包和镜像
$ mvn package docker:build -Dmaven.test.skip=true
# docker运行命令
$ docker run -d --name ywh-frame --restart always -p 8082:8082 -v /ywh/projectwork/spring/logs:/usr/local/logs ywh-frame
复制代码
注意:在打包前端项目以前须要修改 config->prod.env.js中的BASE_APIIP为本身服务器的IP地址,我填的是公网IP,为了确保能够把dev.env.js中的BASE_API也修改了。
在有node_modules的前提下,直接运行命令会在项目中下面的命令,会在本项目中生成一个 dist 文件夹。
# 在前端项目的文件夹下运行此命令
$ npm run build
复制代码
服务器上要安装Nginx,安装方法已经在笔记的开头有连接介绍,也是以docker来启动的,这时把生成的静态文件打包上传到Liunx服务器Nginx的root目录下便可,主要是Nginx的安装和配置,页面无非是静态页面。
$ cd /home/www/website
$ rz
$ tar -xvf dist.tar
复制代码
若是所有正常启动,在你的服务器上启动的容器应该有四个