在docker build

时间:2016-09-23 13:07:18

标签: linux bash shell docker

在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构建过程中设置环境变量。

1 个答案:

答案 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。