在 docker 中使用环境变量
Use environment variables in docker
我已经实施了 docker 自动化设置项目。我在 Ubuntu 服务器上使用 docker 1.9 并利用功能 build-arg
。我用它在 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
我的 Docker 文件有代码
ARG domain
RUN /bin/sh /script.sh $domain
现在我需要在我获得 Amazon Linux AMI 的 AWS 上迁移应用程序。但是这里我得到支持docker的1.7版本,不支持build-arg
。我试图升级,但很多依赖项阻止了我。
现在我决定使用如下所示的 ENV 环境变量。
docker run -d -p 8080:80 -e domain=demo1.myapp.com
我也把Docker文件改成了
我的 Docker 文件有代码
RUN /bin/sh /script.sh
但看起来它们在我的场景中不起作用,因为在构建时 sed 脚本替换了 apache 文件中的空值并且构建过程失败。
如果没有构建 arg 是不可能的,或者我做错了 set/use ENV
首先,AWS可以支持docker1.9.
例如参见“Getting overlay networking to work in AWS with Docker 1.9”
- 使用 Docker 机器版本 0.5.2-dev,如 explained here
- 使用 right AMI (Amazon Machine Image) Ubuntu 15.10
- 设置 AWS environment variables
如果您选择保留旧 AMI 及其 docker 1.7,则 -e
option 仅适用于运行时(creating/running 容器),不适用于构建时间(图像)。
这意味着如果您的 ENTRYPOINT
或 CMD
是:/script.sh
,使用 inside 脚本 $domain
(然后启动您的主进程),那会起作用。
我已经实施了 docker 自动化设置项目。我在 Ubuntu 服务器上使用 docker 1.9 并利用功能 build-arg
。我用它在 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
我的 Docker 文件有代码
ARG domain
RUN /bin/sh /script.sh $domain
现在我需要在我获得 Amazon Linux AMI 的 AWS 上迁移应用程序。但是这里我得到支持docker的1.7版本,不支持build-arg
。我试图升级,但很多依赖项阻止了我。
现在我决定使用如下所示的 ENV 环境变量。
docker run -d -p 8080:80 -e domain=demo1.myapp.com
我也把Docker文件改成了
我的 Docker 文件有代码
RUN /bin/sh /script.sh
但看起来它们在我的场景中不起作用,因为在构建时 sed 脚本替换了 apache 文件中的空值并且构建过程失败。
如果没有构建 arg 是不可能的,或者我做错了 set/use ENV
首先,AWS可以支持docker1.9.
例如参见“Getting overlay networking to work in AWS with Docker 1.9”
- 使用 Docker 机器版本 0.5.2-dev,如 explained here
- 使用 right AMI (Amazon Machine Image) Ubuntu 15.10
- 设置 AWS environment variables
如果您选择保留旧 AMI 及其 docker 1.7,则 -e
option 仅适用于运行时(creating/running 容器),不适用于构建时间(图像)。
这意味着如果您的 ENTRYPOINT
或 CMD
是:/script.sh
,使用 inside 脚本 $domain
(然后启动您的主进程),那会起作用。