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