在ECS Docker中为Selenium Chrome Hub动态设置环境变量

时间:2018-06-20 09:56:23

标签: amazon-web-services selenium docker dockerfile amazon-ecs

我在AWS-ECS中有一个群集,其中在ECR中有自定义图像,该图像使用了来自docker hub的selenium / node-chrome作为基础图像。这是我要用作硒节点的服务。我正在其中传递3环境变量,其中变量之一是REMOTE_HOST。我想在Docker映像在ECS中运行时动态设置它。

以下是我尝试过的事情。

DockerFile

FROM selenium/node-chrome:3.10.0 COPY init.sh /etc/profile.d/ RUN sudo chmod +x /etc/profile.d/init.sh

init.sh

export EC2_HOST=$(wget -O - http://169.254.169.254/latest/meta-data/local-ipv4 2> /dev/null)
export REMOTE_HOST="http://$EC2_HOST:5555"

我期望在启动docker的同时,REMOTE_HOST可用于基本docker映像。但是我看不到图像正在使用环境变量,也看不到在EC2实例中连接到容器(docker exec -it <Container Id> bash)后回显时的变量值。

有人可以帮助我如何动态设置环境变量吗?

我也尝试过使用入口点,但没有运气

FROM selenium/node-chrome:3.10.0 COPY init.sh /etc/profile.d/ RUN sudo chmod +x /etc/profile.d/init.sh ENTRYPOINT ["init.sh"]

1 个答案:

答案 0 :(得分:0)

我不能说为什么/etc/profile.d/init.sh不能在容器旋转时执行,也许这取决于selenium / node-chrome的Linux基本映像。

但是,ENTRYPOINT ["init.sh"]绝对不起作用,因为您要替换selenium / node-chrome设置的入口点脚本。相反,您应该尝试添加到它。我将您的dockerfile编辑为:

FROM selenium/node-chrome:3.10.0
COPY init.sh /etc/profile.d/
RUN sudo chmod +x /etc/profile.d/init.sh
USER root
RUN sed -i '1 asource /etc/profile.d/init.sh' /opt/bin/entry_point.sh
USER seluser

sed行将init.sh行添加到第二行中的现有entry_point.sh,现在,当容器启动时,您将看到:

REMOTE_HOST variable is set, appending -remoteHost

请注意,尽管当您使用docker exec -it <id> /bin/bash启动新的shell时,它不一定继承与运行selenium进程的shell相同的环境,但是echo可能无法工作。