在docker构建期间,我需要运行一个bash脚本,它设置一些环境变量。
脚本看起来像这样:
#!/bin/bash
export ENVVAR=TEST
export HOST=local
export PORT=port
我尝试以不同的方式在dockerfile中调用此脚本,但它们都没有工作。我试过这些:
ADD ./myscript.sh
RUN chmod +x /myscript.sh;\
/bin/bash -c 'source ./myscript.sh';\
/bin/bash -c 'source /myscript.sh';\
/bin/bash -c source ./myscript.sh;\
/bin/bash -c source /myscript.sh;\
source ./myscript.sh;\
source /myscript.sh;\
/myscript.sh;\
./myscript.sh;\
ENTRYPOINT ["/bin/bash"]
当然我在RUN中只有其中一个命令,我只是将它们放在这里分组。
如果我运行容器并使用source ./myscript.sh
,它会按预期工作。
由于多种限制和其他原因,我无法使用docker compose,-e参数,dockerfile中的ENV KEY VALUE或类似的方法。我需要在docker构建过程中设置环境变量。
答案 0 :(得分:1)
您根本不需要获取ENTRYPOINT中指定的shell。只需将myscript.sh添加到图像中(使用COPY而不是ADD)。
COPY myscript.sh /usr/local/bin
然后在你的入口点实际启动的shell上获取它。
docker run myimage source /usr/local/bin/myscript.sh
btw,myscript.sh非常不具描述性。例如,您可以使用env.sh。