前端docker化时,怎么根据不同的环境调用对应的后台服务?
发布于 6 年前 作者 yyp544784013 4425 次浏览 来自 问答

开发项目时,一般有3套环境,同一个接口服务,不同环境访问域名是不一样的,如: 开发环境:dev.test.com 测试环境:qa.test.com 正式环境:pro.test.com

我们目前的做法是: 不同的环境构建时,执行不同的命令,可以实现不同环境访问不同的域名。

但是现在要容器化,代码只构建一次,做成镜像,发布到不同的环境。这样就没办法根据环境动态构建不同的域名服务。

10 回复

我会有两种方式,如果执行的命令单纯的话我会用环境变数

	FROM node
	ENV API_URL=google.com \
	        NODE_ENV=production
			COMMAND=dev
	RUN yarn
	CMD yarn ${COMMAND}

启动的时候跑 docker run --rm -e COMMAND=start -e API_URL=development node

如果要执行的命令复杂的话,我会用 shell script 包在 image 里面,在依照 NODE_ENV 写入需要的环境变数

前端不做容器化, 没多大意义, 静态资源用ansible扔物理机nginx后面不就好了. 一些静态资源酌情走CDN.

打包可以打成一样的,但是服务启动的时候加不同的参数啊

把你的地址变量用一个特殊的参数代替,docker启动的时候,传入一个参数,跑个shell脚本 替换掉那个特殊参数

来自酷炫的 CNodeMD

@xiaozhongliu 你这个解决方案说了和没说一样 做不做docker化 不是前端能决定 基础架构决定docker化 那么前端只能跟着docker化 不可能为前端独立搞一套运维系统

@tao1991123 倒没有独立的运维系统, 对于使用者来说是一致的. 只是内部策略不一样. 问题来了, 为什么这么肯定地说前端决定不了?

借用java那套,搞个配置中心节点,随便点 http+redis 就ok,所有配置从这里面获取。

使用環境變數指定網域就可以了

环境变量啊

回到顶部