.NET6 微服务架构实战系列---Docker+Nginx部署前端Vue项目

发布时间 2023-07-09 04:04:14作者: Code_HHX

一、相关配置安装

1.1 安装Docker

CentOS环境安装Docker

1.2 Docker中拉取nginx镜像

docker pull nginx

二、Vue前端项目创建配置文件

我们需要在根目录下创建Dockerfile文件和default.conf文件。
其中default.conf文件的名称是什么无所谓,只要在配置文件中注意使用相同名称即可。

2.1 Dokcerfile文件

Dockerfile文件内容具体如下:

FROM nginx:latest

# 将项目根目录下dist文件夹下的所有文件复制到镜像中 /usr/share/nginx/html/ 目录下
COPY dist/ /usr/share/nginx/html/
COPY default.conf /etc/nginx/conf.d/default.conf

#这里镜像中的目录我们不要动,但需要保证我们编写的文件名也为default.conf,或者与你自己写的文件名对应
  • FROM nginx:latest
    命令的意思该镜像是基于 nginx:latest 镜像而构建的。

  • COPY dist/ /usr/share/nginx/html/
    命令的意思是将项目根目录下 dist 文件夹下的所有文件复制到镜像中 /usr/share/nginx/html/ 目录下。

  • COPY default.conf /etc/nginx/conf.d/default.conf
    命令的意思是将 Nginx 目录下的 default.conf 复制到 etc/nginx/conf.d/default.conf,用本地的 default.conf 配置来替换 Nginx 镜像里的默认配置。

2.2 default.conf文件

下面的配置直接照抄就好,特别注意,监听的端口号并不需要动,这里的80端口指的是容器的端口,最后我们会将容器的端口映射到我们宿主服务器的端口,比如映射到8888端口。

完整配置:

upstream my_server{
  server 121.41.4.33:3000; # 后端server 地址
  keepalive 2000;
}

server {
    listen       80; #这里的端口号不要动,80端口指的是容器的端口,最后我们会将容器的端口映射到我们宿主服务器的端口,比如映射到8888端口
    server_name  111.20.xxx.xxx; # 修改为docker服务宿主机的ip/域名
    
    #charset koi8-r;
    access_log  /var/log/nginx/host.access.log  main;
    error_log  /var/log/nginx/error.log  error;

    location / {
        root   /usr/share/nginx/html;
        index  index.html index.htm;
        try_files $uri $uri/ /index.html =404;
    }
     #  这里就是和vue本地代理的意思一样,已api开头的路径都代理到本机的3000端口
    location /api/ {
        proxy_pass http://my_server/api;
        proxy_set_header Host $host:$server_port;
        rewrite ^/api/(.*) /$1 break;
    }

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

如果前端项目打包出来的base_ath路径有改动,需要在default.conf文件中的location下修改相对应的路径,比如:

三、项目打包部署到Docker

将打包项目,把dist文件夹和刚刚创建的Dockerfile,default.conf放到同一目录,并上传到服务器。


然后需要构建镜像

docker build -t 镜像名称 项目路径

比如,我的代码存放位置是/home/project/cloud-admin-client目录

docker build -t cloud-admin-client /home/project/cloud-admin-client

镜像构建好后,我们就可以拿这个镜像启动一个容器

docker run -d -p 前端项目端口:80 --name 容器名称 镜像名称
  • -d 后台方式运行
  • -p 8888:80 端口映射,将宿主的8888端口映射到容器的80端口
  • –name 容器名 镜像名

然后我们可以使用docker ps查看当前正在运行的容器
并且使用IP地址和端口号访问当前的项目

四、防火墙设置

上面我们进行了端口映射,那就需要在服务器中开启要使用的端口,
我们可以在云服务器中的安全组进行设置。
或者使用命令设置