我使用波纹管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。
答案 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
。