# vue+nodejs+mongodb 项目部署(虚拟机Centos7位linux系统下 docker部署(nginx))

139 阅读3分钟

前端部署 虚拟机以Centos 7 系统为例

1.安装gcc

yum -y install gcc
yum -y install gcc-c++

2.安装dokcer

yum install docker

3.启动docker

systemctl start docker

4.设置开机自启动

systemctl enable docker

5.拉取 nginx

docker pull nginx

6.启动 nginx (以下步骤为测试)

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

7.挂在nginx 这样就不用每次去修改配置 ,直接挂在nginx文件路径

mkdir /usr/local/nginx
mkdir /usr/local/nginx/www
mkdir /usr/local/nginx/conf
mkdir /usr/local/nginx/logs

7.1 复制nginx容器中的相关文件到本地

docker cp b628a3549580:/etc/nginx/nginx.conf /usr/local/nginx/nginx.conf
docker cp b628a3549580:/etc/nginx/conf.d /usr/local/nginx/conf/
docker cp b628a3549580:/usr/share/nginx/html/ /usr/local/nginx/www/html/
docker cp b628a3549580:/var/log/nginx/access.log /usr/local/nginx/logs/access.log
docker cp b628a3549580:/var/log/nginx/error.log /usr/local/nginx/logs/error.log

注:docker cp b628a3549580中的 "b628a3549580" 为容器ID前缀,只要唯一就好了,可通过docker ps -a找到nginx的容器ID 7.2 删除之前的容器 停止容器:

docker stop b628a3549580

移除容器:

docker rm b628a3549580

7.3 启动nginx并挂载路径

docker run --name nginx -p 80:80 -v /usr/local/nginx/nginx.conf:/etc/nginx/nginx.conf -v /usr/local/nginx/www/html/:/usr/share/nginx/html/ -v /usr/local/nginx/logs/access.log:/var/log/nginx/access.log -v /usr/local/nginx/logs/error.log:/var/log/nginx/error.log -v /usr/local/nginx/conf/conf.d/:/etc/nginx/conf.d/ --privileged=true -d nginx

8.把前端项目打包(npm run build 注意vue.config.js文件中 publicPath='/'),并且配置对应的Dockerfile 和nginx.conf文件

Dockerfile文件

# 设置基础镜像
FROM nginx            
# 将dist文件中的内容复制到 /app/dist 这个目录下面
COPY ./dist/ /usr/share/nginx/html/  
#用本地的 nginx.conf 配置来替换nginx镜像里的默认配置
COPY nginx.conf /etc/nginx/nginx.conf

nginx.conf文件

    worker_processes  1;

    events {
        worker_connections  1024;
    }


    http {
        include       mime.types;
        default_type  application/octet-stream;

        sendfile        on;

        keepalive_timeout  65;

        client_max_body_size   20m;
        server {
            listen       80;

           # ip地址  上线的话可以切换成服务器ip地址
            server_name  192.168.102.130;

         location / {
            root   /usr/share/nginx/html;
            index  index.html index.htm;
            try_files $uri $uri/ /index.html;
        }  
        #如果设置了代理
         location /api {
            proxy_pass http://192.168.102.130:5000;
        }
    }

9.在这三个文件(dist Dockerfile nginx.conf)下开启终端 创建镜像

docker budil -t  web-vue .    //创建镜像注意后面是一个点

10.查看镜像是否创建成功

docker images    //查看所有镜像

11.启动容器

docker run -p 8085:80 -d --name web-vue  web-vue
(-p 是端口映射,-d 是后台启动,-name 是给容器命名  第二个web-vue 是镜像名称)

12.查看正在运行的容器

docker ps  

13.如果部署的端口已经在运行,访问 192.168.xx.xx:8085 (访问 虚拟机ip+映射端口) 就出现了前端项目

服务端部署(nodejs + mongodb)

1.拉取node 和 mongo (根据自己的版本来)

docker pull node:12.2.0  
docker pull mongo:4.1.0

2.把服务端代码 拷贝到虚拟机中,新建Dockerfile文件

3.Dockerfile文件

FROM node:12.2.0
#是将我们创建的文件夹做为工作目录(注意:这个文件路径是镜像内部的文件路径)
WORKDIR /usr/src/server
#是把服务器当前目录下的所有文件拷贝到镜像的/usr/src/server文件夹下。
COPY . /usr/src/server
#使用npm 安装我们的app据需要的所有依赖。
RUN npm install
#根据自己的服务的端口
EXPOSE 5000
#运行这个node.js 项目
CMD [ "node", "server.js" ]

4.创建镜像

docker budil -t  server-test .
docker run -p 5000:5000 -d --name server-test  server-test

5.启动容器

6.启动 ip+端口 访问服务端