Amazon ec2 在docker中使用环境变量

Amazon ec2 在docker中使用环境变量,amazon-ec2,docker,parameter-passing,dockerfile,Amazon Ec2,Docker,Parameter Passing,Dockerfile,我已经实现了docker项目的自动化设置。我在Ubuntu服务器上使用Docker1.9,并利用功能buildarg。我使用它来设置apache虚拟主机文件中的动态子域 docker build --no-cache --build-arg domain=demo1.myapp.com -t imagename . docker run -d -p 8080:80 imagename 我使用域并使用脚本文件中的sed命令在虚拟主机文件中替换它 sed -i -e "s/defaulthos

我已经实现了docker项目的自动化设置。我在Ubuntu服务器上使用Docker1.9,并利用功能
buildarg
。我使用它来设置apache虚拟主机文件中的动态子域

 docker build --no-cache --build-arg domain=demo1.myapp.com -t imagename .
 docker run -d -p 8080:80 imagename
我使用域并使用脚本文件中的sed命令在虚拟主机文件中替换它

sed -i -e "s/defaulthost.com/$domain/g" /etc/apache2/sites-enabled/myApp.conf
我的Dockerfile有代码

ARG domain 
RUN /bin/sh /script.sh $domain
RUN /bin/sh /script.sh
现在我需要在AWS上迁移应用程序,在AWS上我可以得到AmazonLinuxAMI。但是这里我得到了支持的docker版本1.7,它不支持
buildarg
。我试图升级,但很多依赖项阻止了我

现在我决定使用ENV环境变量,如下所示

docker run -d -p 8080:80 -e domain=demo1.myapp.com 
我还更改了Docker文件,如

我的Dockerfile有代码

ARG domain 
RUN /bin/sh /script.sh $domain
RUN /bin/sh /script.sh
但看起来它们在我的场景中不起作用,因为在构建时sed脚本替换apache文件中的空值,构建过程失败


如果没有build arg无法实现,或者我首先设置/使用ENV的方法有误,AWS可以支持docker 1.9。
例如,请参见“”

  • 根据需要使用Docker机器版本0.5.2-dev
  • 使用
  • 设立

如果您选择继续使用旧的AMI及其docker 1.7,那么它们仅用于运行时(创建/运行容器),而不是构建时(映像)


这意味着,如果您的
入口点
CMD
是:
/script.sh
,在脚本内部使用
$domain
(然后启动主进程),这将起作用。

是的,幸运的是我自己昨天发现了环境问题。由于在Docker方面经验不足,我不知道脚本是否必须使用CMD而不是run来运行以利用环境变量。所以,在CMD中运行脚本之后,现在环境变量似乎可以工作了。对于第一个,是的,我知道我可以用Amazon EMI替换Ubuntu,但如果没有替代方案,那将是最后的解决方案。@kuldeep.kamboj我同意:我只想通过提及AMI部分来涵盖所有角度。