V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
juventusryp
V2EX  ›  问与答

docker-compose 部署 vue-element-admin 时候如何修改其中部分内容

  •  
  •   juventusryp · 2021-02-06 12:55:55 +08:00 · 1054 次点击
    这是一个创建于 1404 天前的主题,其中的信息可能已经有所发展或是发生改变。
    问题描述:
    现有一个项目前端用的是 vue-element-admin,docker-compose 一键部署前端+后端+mysql 已经成功,但是有一个问题是,部署的时候前端项目中有部分 IP 地址需要更改,比如像后端发送的地址本来是 127.0.0.1:5000,但是如果在服务器上肯定要改成服务器 IP
    网上搜索似乎使用 sh 文件配合 docker 的环境变量可以修改,但是总是失败。求问具体该如何去解决?
    6 条回复    2021-02-06 14:03:06 +08:00
    gzlock
        1
    gzlock  
       2021-02-06 13:13:19 +08:00 via Android
    最好还是改为在 docker-compose 中用环境变量传值
    learningman
        2
    learningman  
       2021-02-06 13:18:37 +08:00 via Android
    我个人的做法是单独一个 js 文件里放这种变量,然后所有地址都用这个 js 里的拼接
    miv
        3
    miv  
       2021-02-06 13:37:53 +08:00 via iPhone
    docker compose 部署就不需要更新 ip 了,直接用容器名字就好。比如后端容器是 admin 端口 8080,前端链接后端就是 admin:8080,这样去玩。哦哦,对了,需要设置你的服务在同一个 docker network 上。你要想,都容器化了,还要自己弄 IP,那不麻烦死。交给 docker 网络就 ojbk
    miv
        4
    miv  
       2021-02-06 13:41:09 +08:00 via iPhone
    二期你都 docker 部署了还要弄 sh 去修改容器,这不靠谱。应该是打容器之前就把环境弄好。无论是弄变量还是其他方式,都是需要在前期弄好的,容器启动后就尽量少 sh 去改东西。这样才优雅一点,重用也方便
    walpurgis
        5
    walpurgis  
       2021-02-06 14:01:48 +08:00
    前端打包完都是静态文件,跑在浏览器隔离环境里,读不到系统变量的,除非启动的时候通过外部脚本把环境变量注入到 html 或 js 里面,所以一般都是多个.env 文件,打包不同环境用不同的.env
    另一种思路是既然用 docker 部署前端,意味着你能控制前端的 web 服务器比如 nginx,让前端的请求都发给自己,nginx 再去把请求转发给实际后端地址,而 nginx 能够读环境变量,也就实现了变量注入
    weixiangzhe
        6
    weixiangzhe  
       2021-02-06 14:03:06 +08:00 via Android
    nginx 也可以修改 response 的内容的,可以看一下 sub filter
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3129 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 00:45 · PVG 08:45 · LAX 16:45 · JFK 19:45
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.