docker+nginx+vue(发布vue项目)

1、在centos服务器上使用docker下载nginx镜像

  这个简单得很就不废话了

2、打包vue项目,npm run build 命令,会打包出一个dist文件夹,文件夹是不能直接上传到服务器上的,所以我是把dist文件夹压缩成zip格式的压缩包然后再上传到服务器

 

 

我把dist.zip压缩包放在了服务器的/home/vue-project/nginx/  目录下:这个是解压之后的

(centos解压zip命令: unzip dist.zip            如果系统提示没有unizp这个命令,那么就安装一下:yum install unzip   )

 

 

 

3、然后在/home/vue-project/nginx 这个目录下要创建两个文件分别是:nginx的配置文件default.conf 和 docker用来生成镜像的文件dockerfile

  3.1 default.conf配置文件内容如下:(有#号注释的地方都是要改成自己的,其他的不动。吐槽下,百度出来别人博客上的nginx配置他妈的一大堆配置,简单点不好吗真的是)

server {
    listen 80;
    server_name xx.xx.xx.xx;

    location / {
        root /home/vue-project/nginx;
        index index.html index.htm;
        try_files $uri $uri/ /index.html =404;
        error_page 405 =200 $uri;
    }

    location /api {
        proxy_pass http://xx.xx.xx.xx:8080/jz-project;
        proxy_redirect off;
        proxy_cookie_path / /api;
    }


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

 

  3.2然后是docker的构建文件:dockerfile   (这个文件就是没有后缀的,直接vi dockerfile创建出来)

    根据自己的目录来配置,就简单的几行代码

FROM nginx

MAINTAINER myname_z

RUN rm /etc/nginx/conf.d/default.conf

ADD default.conf /etc/nginx/conf.d/

COPY dist/ /home/vue-project/nginx/

  

4、现在所有的配置都弄好了,使用命令来构建docker镜像:

//nginx-test名称后面有个.要注意
docker build -t nginx-test .

  创建成功后,查看docker镜像:docker images,会发现有个名叫nginx-test的镜像,没有就是没成功,成功如下:

 

 

 5、最后创建此镜像的容器启动运行:

docker run --name nginx-docker -p 80:80 -d nginx-test

  查看运行的容器:docker ps

 

 

 

  打开浏览器访问服务器地址成功如下:

 

 

 

 

 

2020年12月4日==================================================

前端vue项目是发布成功了,但是访问不到发布的后端地址

1、登录请求,报了第一个错:405 not allowed

  百度一下:这个是nginx的问题说什么所有静态资源请求只能用get请求

 

  解决如下:(新测有效) 把他的405错误返回全转成200状态

 

 

 

2、405问题是解决了,但出出了一个问题,点击登录,怎么也请求不到后端。我用postman发送post登录接口地址请求,服务器是有响应的

  登录请求是返回了200,但没有返回任何response结果,在服务器使用:docker logs --tail 300 -f jz-project  命令查看我的后端项目日志,没有任何请求进来,没有任何日志打印

 

  那么问题来了,很明显请求根本没有进入后端项目

 

  接口地址请求没有进入后端项目,后端项目又是正常的没毛病,那肯定就是地址问题,记得我在vue项目里配置了axios的代理不知道有什么关系。百度了几个小时之后终于找到解决办法,感觉像是这么解决的就试了试,没想到成功了。

 

  解决办法如下:

    2.1   在nginx配置文件里配置代理就行了:因为我在vue项目里配置了axios代理,所有请求都是http://localhost:8080/api/xxx/xxx,在这个nginx配置文件里配置一个location{},目的是把所有请求地址:/api前面这段地址给换成:http://服务器ip:8080/jz-project      后端项目所在的服务器地址

 

 

 

 

 

 

   最后就成功登录进去了:=================上图

 

 

 

 

 

 

。。。

 

posted @ 2020-12-03 22:00  下课后我要去放牛  阅读(1441)  评论(0编辑  收藏  举报