Vue.js是一种流行的JavaScript框架,用于构建用户界面。它具有易学易用的特点,并且在开发过程中提供了许多便利。而Docker是一种容器化平台,可以将应用程序及其依赖项打包到一个独立的可运行单元中。在本篇文章中,我们将介绍如何使用Docker来运行Vue项目,并展示如何配置Nginx作为Vue项目的反向代理服务器.

1、目录结构

├── conf.d
│ └── default.conf
├── dist
└── docker-compose.yml

2、准备所需文件

default.conf

这里需要注意,我们引入的是nginx容器中的 /etc/nginx/conf.d/default.conf这个文件,这个文件被/etc/nginx/nginx.conf的http所包含 所以不需要写http那一块内容

server {
        listen       80;
        server_name  localhost;

        location / {
            root   /dist;
            try_files $uri $uri/ /index.html;
            index  index.html index.htm;
        }

        location /dev-api/{
            proxy_set_header Host $http_host;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header REMOTE-HOST $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_pass http://192.168.6.113:9080/;
        }

        # 避免actuator暴露
        if ($request_uri ~ "/actuator") {
            return 403;
        }

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

dist

即使用 npm run build:prod 命令进行打包后的文件夹 内包含index.html及其他静态文件

docker-compose.yml

version: '3.1'
services:
  nginx:           # 服务的名称
    restart: always   # 代表只要docker启动,那么这个容器就跟着一起启动
    image: nginx  # 指定镜像  本地没有则会自动从docker云镜像拉取
    container_name: nginx  # 指定容器名称:--name
    privileged: true
    network_mode: host
    environment:
      TZ: Asia/Shanghai        # 指定时区
    volumes:
      - ./conf.d:/etc/nginx/conf.d   # 映射数据卷
      - ./dist:/dist