惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

V
Visual Studio Blog
Microsoft Azure Blog
Microsoft Azure Blog
WordPress大学
WordPress大学
小众软件
小众软件
Last Week in AI
Last Week in AI
月光博客
月光博客
博客园 - 聂微东
Recent Announcements
Recent Announcements
A
About on SuperTechFans
博客园 - 三生石上(FineUI控件)
V
V2EX
阮一峰的网络日志
阮一峰的网络日志
博客园 - Franky
云风的 BLOG
云风的 BLOG
量子位
N
Netflix TechBlog - Medium
Hugging Face - Blog
Hugging Face - Blog
H
Hackread – Cybersecurity News, Data Breaches, AI and More
J
Java Code Geeks
博客园 - 司徒正美
S
SegmentFault 最新的问题
有赞技术团队
有赞技术团队
Google DeepMind News
Google DeepMind News
宝玉的分享
宝玉的分享

博客园 - 无心々菜

InfluxDB2 在 docker 环境下部署,以及备份还原 高并发 - 配置2 高并发 - 配置 地图 - QGIS加载geojson,并导入Postgis数据库 VUE2 - Geoserver打印矢量PDF地图 - 在VUE2中的应用 地图 - Geoserver打印矢量PDF地图 Docker - 离线+无root环境安装 docker-rootless 运维 - 哪吒监控 Postgres 数据库在docker环境下分布式部署(arm64框架) Postgres 数据库在docker环境下分布式部署 Https - 配置方案 OpenObserver - 系统接口监控 VUE2 - Docker部署 + traefik反代 高斯DB 数据库的安装 NETCORE - 使用 EFCORE 调用 高斯DB数据库 JMeter - 压力测试 NETCORE - IdentityServer4 多节点部署 NETCORE - IdentityServer4 相关文档 .NET框架 - NETCORE + API + EF(DBFirst) + PostgresSql Docker 部署 APISIX + etcd Docker部署martin 矢量切片服务器 Postgres 数据库的安装 NETCORE - 调用 RUSTFS Docker - 部署 RustFS 对像存储 Docker - 使用 Docker Secrets 敏感数据传输 Docker - 部署 Consul KV 统一管理所有项目的配置 Docker - 部署 HashiCorp Vault 开源密钥管理工具 kong 网关下集成 Consul服务注册与发现 Docker 部署 kong 网关 Docker - 部署Consul 新
VUE3 - Docker部署 + traefik反代
无心々菜 · 2026-04-13 · via 博客园 - 无心々菜

VUE2 - Docker部署 + traefik反代

环境 : vue3,vite ,docker , traefik

条件: 当前由vue3开发,调试环境地址为  http://localhost:6188/

   部署后,希望通过 http://localhost:7701/master 访问,

   反代后,希望通过 http://localhost:3000/master 访问

1. 首先修改路由

export const router = createRouter({ 
  history: createWebHistory('/master/'),
  routes: basicRoutes,
});

3. 修改启动文件

  "scripts": {
    "dev": "vite",
     "build:special22": "cross-env BUILD_MODE=special vite build --mode special22", 
  },

4. 修改 vite.config.js 


const isSpecial = process.env.BUILD_MODE === 'special';

export default defineConfig({
  plugins: [
    vue(),
    svgLoader(),
    // basicSsl()
    vueJsx(),
    {
      name: 'copy-dockerfile',
      writeBundle() {
        // 构建完成后复制文件
        const targetDir = 'dist/';  

        const dockerfilePath = resolve(__dirname, 'Dockerfile');
        const targetPath = resolve(__dirname, targetDir, 'Dockerfile');

        if (fs.existsSync(dockerfilePath)) {
          fs.copyFileSync(dockerfilePath, targetPath);
        }
      },
    },
  ],

  base: isSpecial ? '/master/' : '/',

  build: {
    outDir: isSpecial ? 'dist/master/' : 'dist/',
    emptyOutDir: true,
    assetsDir: 'assets',
    sourcemap: false,
    minify: 'terser',
  },
}

5. 编辑 Dockerfile

# 使用arm64 nginx镜像
FROM nginx

# 定义作者(推荐使用LABEL替代MAINTAINER)
LABEL maintainer="lihongyuan"

# 设置工作目录
WORKDIR /usr/share/nginx/html

# 复制静态文件到nginx目录
COPY . .

# 暴露80端口
EXPOSE 80

6. 发布项目

pnpm run build:special22

image

7. 打镜像

docker build -t railmaster:arm64.20250924 .

8. 编辑 docker-compose

version: '3.8'
services:
  railmaster:
    image: railmaster:arm64.20250924
    container_name: railmaster
    restart: always
    ports:
      - "7701:80"
    volumes:
      - /data/dockerMappingFiles/data_railmaster/default.conf:/etc/nginx/conf.d/default.conf

9. 编辑 nginx 的配置文件

default.conf


     server {
        listen       80;
        server_name  master;

        # 禁用自动重定向
        absolute_redirect off;
        server_name_in_redirect off;
        port_in_redirect off;

        # 主应用路径 - 使用root指令
        location /master/ {
            root   /usr/share/nginx/html;
            index  index.html index.htm;
             
            try_files $uri $uri/ /master/index.html;
        }

        # 处理不带斜杠的访问
        location = /master {
            return 301 /master/;
        }

        # 根路径重定向到railmaster
        location = / {
            return 301 /master/;
        }

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

 10. 启动

docker-compose up -d railmaster

可以通过地址 http://ip:7701/master 访问服务

11. 配置traefik

traefik.toml

[ping]
  entryPoint = "web"

[entryPoints]
  [entryPoints.web]
    address = ":3000"
  [entryPoints.websecure]
    address = ":8444"

[log]
  level = "DEBUG"
  filePath = "/data/winstall/traefik/traefik.log"

[accessLog]
  filePath = "/data/winstall/traefik/access.log"

[api]
  insecure = true
  dashboard = true

[providers.file]
  filename = "/data/winstall/traefik/dynamic_conf.toml"
  watch = true

dynamic_conf.toml

  [http.routers.master]
    entryPoints = ["web"]  
    rule = "PathPrefix(`/master`)"
    service = "master"
    priority = 10
  [http.services]
    [http.services.master]
      [http.services.master.loadBalancer]
        [[http.services.master.loadBalancer.servers]]
          url = "http://10.5.84.10:7701/"

 启动 traefik 后 

 可以访问 http://ip:3000/master

end.