从docker容器运行sh脚本

时间:2018-05-26 10:36:02

标签: bash docker

我使用波纹管Dockerfile构建一个docker镜像:

FROM node:8.9.4

ADD setENV.sh /usr/local/bin/setENV.sh
RUN chmod +x /usr/local/bin/setENV.sh

CMD [ "/bin/bash" "usr/local/bin/setENV.sh" ]

setENV脚本是:

#!/bin/sh
echo "PORT=${PORT:-1234}" >> .env
echo "PORT_SERVICE=${PORT_SERVICE:-8888}" > .env
echo "HOST_SERVICE=${HOST_SERVICE:-1234}" > .env

我将图像构建为:

docker image build -t my-node .

然后我将图像运行为:

docker run -it my-node bash

但脚本未执行。 从容器内部运行脚本:

/bin/bash usr/local/bin/setENV.sh

工作正常。

请注意,我正在使用docker for windows。

2 个答案:

答案 0 :(得分:1)

我认为最后一行应该是

CMD [ "/bin/bash", "usr/local/bin/setENV.sh" ]

您错过了,

答案 1 :(得分:1)

命令

docker run -it my-node bash

只需运行bash

要运行CMD,您必须执行

docker run -it my-node

但是,请注意,您的容器将立即退出,因为写入文件后无需执行任何操作。因此,要查看结果,您需要将cat .env或其他内容添加到setENV.sh