vue+nginx+docker 的前端项目部署方案
前后分离的项目,前端工程师就会面临一个问题:如何部署前端项目?。
因为我用的是vue,就在此基础上谈谈我的部署方案。
首先想到的就是将项目打包后用nginx发布出来就好了。
为什么不直接npm run dev?且不说性能问题,关键是在window上开发的代码放到linux上不一定能跑起来啊。npm install? 不存在的,因为我要部署的环境基本都是内网。
也是因为部署环境基本是内网,也没有考虑直接在服务器上安装nginx的方案。(关间是太懒,不想换一个地方就安装一次nginx啊)。所以看上了咋们这后端已经‘如日中天’的docker。
好了, 废话不多说了。直接来吧
准备工作
os: centos 7
docker-ce(-ce就是社区版,不要钱~ ~)。
安装docker
yum install docker
一般就安装完成了,就是这个easy有木有。(内网环境的docker以后再来说,主要是后端小伙伴已经吧docker装上啦~)
启动一下服务
systemctl start docker
安装nginx镜像
docker pull nginx
2019-04-28-2
然后查看一下你的镜像
docker images
2019-04-28-3
好了, 现在你的服务器上就有了一个nginx的docker镜像。
部署项目
把你的项目打开,ls一下啦。
2019-04-28-4
项目怎么来的就不说了,你会发现你项目里少了两个东西,一个是Dockerfile,另一个是dist。
Dockerfile没有的话好办,直接创建一个
vi Dockerfile
进去过后填入下面的内容
FROM nginx:latest
MAINTAINER xx
COPY dist/ /usr/share/nginx/html/
第一行写的是设置基础镜像,也就是我们刚刚pull下来的nginx镜像,
第二行是写一个作者,写上自己的邮箱就好滴啦,
第三行的意思就是将dist文件夹下面的内容拷贝到/usr/share/nginx/html/这个目录下。
这个目录是不是很眼熟?这个路径就是nginx一般的项目地址路径。还记得nginx的测试页面在哪儿吗,就是这个路径下的index.html啦。
没有dist文件夹怎么办?更简单啦,vue项目下npm run build一下下啦。一般来说,项目成熟了部署的时候就不带源码了,直接带这个文件夹到地方部署就好了嘛。
好了 准备开始创建自己的镜像了
在Dockerfile的目录下执行
docker build -t xxx .
xxx 是你镜像的名字。 特别注意后页面那个点不能省略
2019-04-28-5然后在docker images 一下,你就能看到自己创建的镜像了。
然后执行命令创建容器
docker run -d --name xx -p 8848:80 xxx
-d:代表后台启动
--name xx:这是创建的容器名称
-p 8848:80: 是将nginx的80映射到你服务器的8848端口(注意你服务器的端口是否开放8848,其他端口也可以)
xxx:是刚刚创建的镜像名称
然后执行docker ps
2019-04-28-6
然后就能看到你创建的容器了。
最后打开浏览器输入你的服务器ip端口号就行了
2019-04-28-7
基本的部署就完成啦。
当然还有很多坑和技巧,比如每次更新了项目如何让容器里的内容也更新等等。今天就不说了,下次再详细记录。