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