[英]Possible to pass env variable from docker-compose.yml to dockerfile?
[英]How to modify the effect of a Dockerfile RUN command based on an environment variable, passed from docker-compose.yml
总而言之,我的项目包括:
因此,在主docker-compose.yml中声明了2个服务,它们各自具有自己的(非版本化).env文件,在此,我声明了特定于给定服务的“特定于环境的”参数。 例如,对于后端服务,我定义了数据库用户名/密码; 对于前端服务,我声明了REST API URL,前端应通过REST API URL通过Ajax检索其数据。
我正在使用env_file
参数通过主docker-compose.yml将env_file
传递给后端服务,并将/frontend/.env传递给前端服务。
两种服务都托管在不同的域(example.com和api.example.com)上。
鉴于Angular 2如何处理其配置,您不能声明OS级环境变量,而应让Angular在应用程序内部的运行时使用它们(例如,从env变量中读取“ BACKEND_URL”并对其进行Ajax调用)。 相反,它希望在构建过程中所有环境参数都在一个名为/src/app/environment.prod.ts的文件中。 我设法通过/ frontend / Dockerfile中的RUN命令创建了此配置文件,但是我在用未版本化/frontend/.env中声明的动态值填充该文件时遇到了麻烦。 我不想在/ frontend / Dockerfile中对内容进行硬编码。
一旦/ frontend / Dockerfile生成具有正确值(例如BACKEND_URL=http://api.example.com
)的静态/src/app/environment.prod.ts,那么其余的构建过程就可以了,并且前端应用程序将获取这些值。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.