我在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"]
答案 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可能无法工作。