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

2021-02-06 12:55:55 +08:00
 juventusryp
问题描述:
现有一个项目前端用的是 vue-element-admin,docker-compose 一键部署前端+后端+mysql 已经成功,但是有一个问题是,部署的时候前端项目中有部分 IP 地址需要更改,比如像后端发送的地址本来是 127.0.0.1:5000,但是如果在服务器上肯定要改成服务器 IP
网上搜索似乎使用 sh 文件配合 docker 的环境变量可以修改,但是总是失败。求问具体该如何去解决?
1048 次点击
所在节点    问与答
6 条回复
gzlock
2021-02-06 13:13:19 +08:00
最好还是改为在 docker-compose 中用环境变量传值
learningman
2021-02-06 13:18:37 +08:00
我个人的做法是单独一个 js 文件里放这种变量,然后所有地址都用这个 js 里的拼接
miv
2021-02-06 13:37:53 +08:00
docker compose 部署就不需要更新 ip 了,直接用容器名字就好。比如后端容器是 admin 端口 8080,前端链接后端就是 admin:8080,这样去玩。哦哦,对了,需要设置你的服务在同一个 docker network 上。你要想,都容器化了,还要自己弄 IP,那不麻烦死。交给 docker 网络就 ojbk
miv
2021-02-06 13:41:09 +08:00
二期你都 docker 部署了还要弄 sh 去修改容器,这不靠谱。应该是打容器之前就把环境弄好。无论是弄变量还是其他方式,都是需要在前期弄好的,容器启动后就尽量少 sh 去改东西。这样才优雅一点,重用也方便
walpurgis
2021-02-06 14:01:48 +08:00
前端打包完都是静态文件,跑在浏览器隔离环境里,读不到系统变量的,除非启动的时候通过外部脚本把环境变量注入到 html 或 js 里面,所以一般都是多个.env 文件,打包不同环境用不同的.env
另一种思路是既然用 docker 部署前端,意味着你能控制前端的 web 服务器比如 nginx,让前端的请求都发给自己,nginx 再去把请求转发给实际后端地址,而 nginx 能够读环境变量,也就实现了变量注入
weixiangzhe
2021-02-06 14:03:06 +08:00
nginx 也可以修改 response 的内容的,可以看一下 sub filter

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/751797

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX