Docker 方式 部署 vue 项目 (docker + vue + nginx)

前言 

当我们在本地开发了一个vue项目之后,肯定是想部署到服务器上供其他人访问,之前介绍过使用cntos7+nginx部署项目,今天让我们来使用docker来部署我们的前端项目,首先你已经安装好了docker,并熟悉基本的docker命令。


部署—获取nginx镜像





docker pull nginx

创建nginx config文件


在项目根目录下创建文件default.conf,写入如下内容

server {
 listen 80;
    server_name  localhost; # 修改为docker服务宿主机的ip  location / {
        root /usr/share/nginx/html;
        index  index.html index.htm;
        try_files $uri $uri/ /index.html =404;
    }

    error_page 500 502 503 504  /50x.html;
    location = /50x.html {
        root   html;
    }
}


该配置文件定义了首页的指向为 /usr/share/nginx/html/index.html, 所以我们可以一会把构建出来的index.html文件和相关的静态资源放到/usr/share/nginx/html目录下。


创建Dockerfile文件

在项目根目录下创建Dockerfile文件,写入下面内容


 
FROM nginx 
MAINTAINER zouzou 
RUN rm /etc/nginx/conf.d/default.conf 
ADD default.conf /etc/nginx/conf.d/ 
COPY dist/ /usr/share/nginx/html/
说明



 
FROM nginx:该镜像是基于nginx:latest镜像构建的 
MAINTAINER zouzou:添加说明 
RUN rm /etc/nginx/conf.d/default.conf:删除目录下的default.conf文件 
ADD default.conf /etc/nginx/conf.d/:将default.conf复制到/etc/nginx/conf.d/下,用本地的default.conf配置来替换nginx镜像里的默认配置 
COPY dist/ /usr/share/nginx/html/:将项目根目录下dist文件夹(构建之后才会生成)下的所有文件复制到镜像/usr/share/nginx/html/目录下 




生成环境包

首先确保安装了node.js,npm可用

在项目根目录下执行下面命令(和package.json文件同级) 

安装依赖


npm install
构建



npm run build
执行结束之后会在项目根目录下生成一个dist的文件夹


构建docker镜像

docker build -t qdqts .
注意不要少了最后的“.”(点)

-t是给镜像命名,.(点)是基于当前目录的Dockerfile来构建镜像


查看本地镜像

docker images | grep qdqts


到这里我们的vue应用镜像已经创建成功,接下来,我们基于该镜像启动一个docker容器

启动docker容器

docker run -d -p 9090:80 --name qdqts qdqts


 
docker run:基于镜像启动一个容器

-d:后台方式启动

-p 9090:80: 端口映射,将宿主机的9090端口映射到容器的80端口

--name:容器名,我起的叫mms

zz-mms:要启动的镜像名称
查看启动的容器


docker ps


访问

现在我们已经启动了,访问宿主机的地址:9090就可以看到我们部署的网站了

跨域

如果你的后端接口是在别的服务器上部署的,这时候我们的default.conf就要加一个反向代理,使用下面的default.conf,然后重新构建docker镜像,启动


 
server {
    listen 80;
    server_name 49.235.160.132; # 修改为docker服务宿主机的ip  
    location / {
        root /usr/share/nginx/html;
        index  index.html index.htm;
        try_files $uri $uri/ /index.html =404;
    }
    location /pro-api{ # pro-api是vue项目里.env.production里的地址 proxy_pass 1.1.1.1; # 这里写的是你后端接口的地址  }

    error_page 500 502 503 504  /50x.html;
    location = /50x.html {
        root   html;
    }
}






联系作者
作者QQ:1538888858 有事请联系作者

Article tags:

作者头像
前端劝退师创始人

分享前端开发资源和前端开发技术资讯等,主攻前后端分离技术;分享个人经历。

PrevPM2 常用命令
NextLinux解压文件到指定目录

发表评论

评论列表

暂无评论