Docker中的环境variables

我有一个应用程序在2个容器中工作。 一个nodeJS和一个nginx容器。 他们正在一起工作。 在开发者的代码中是一个src / app / app.config.js

 (function () { 'use strict'; angular .module('app') .constant('config', { URL: 'http://localhost', PORT: '8888', }); })(); 

在开发者的情况下,URL和端口是好的。 在本地构build之后查看该应用程序。 但是我们在做什么? 那么我们有一个jenkins执行npm-install,gulp build等等。 正确生成的文件夹将由Dockerfiles复制(一个用于nginx,一个用于nodejs)。 之后,我们可以用这个命令启动容器:

 docker run --restart=always -d --name "nodejs" our-nodejs-image:11 docker run --restart=always -d -p 80:80 --name nginx --link nodejs:nodejs our-nginx-image:11 

主要的问题是以下几点。 URL和PORT必须更改。 因此,比如我们在ec2-123:80上运行我们的容器, ec2-123:80不是将URL更改为ec2-123 ,将PORT更改为80 (因为nginx正在作为我们的nodejs的反向代理)。

所以在这种情况下,我们正在失去docker的优势(在每个环境中运行一个映像)。 所以我们需要在执行docker run命令的时候描述的环境variables。 而这个variables需要是URL:和PORT:的input。

所以nginx的运行命令需要如下所示:

 docker run -e "URL: ec123" -e "PORT:80" --restart=always -d -p 80:80 --name nginx --link nodejs:nodejs our-nginx-image:11