在NGINX docker容器中启动之前运行一个bash脚本

我正在尝试使用docker在localhost:8000上运行一个JavaScript应用程序。 部分我想做的是换出一些基于docker run命令的configuration文件,我想传递一个环境variables到容器中,以便bash脚本可以使用它作为参数。

我的dockerfile看起来是这样的:

FROM nginx COPY . /usr/share/nginx/html CMD ["bash","/usr/share/nginx/html/runfile.sh"] 

而bash脚本看起来像这样:

 #!/bin/bash if [ "$SECURITY_VERSION" = "OPENAM" ]; then sed -i -e 's/localhost/openam/g' authConfig.js fi docker run -p 8000:80 missioncontrol:latest -e SECURITY_VERSION="TEST" 

Docker给了我一个exception,说-e执行命令没有find。

但是,如果我更改dockerfile使用ENTRYPOINT而不是CMD,-e标志工作,但Web服务器不启动。

有什么我在这里失踪? 入口点被覆盖或什么的?

编辑:

所以我更新了我的dockerfile来使用ENTRYPOINT ["bash","/usr/share/nginx/html/runfile.sh", ";", " nginx -g daemon off;"]

但docker集装箱仍然closures。 有什么我失踪?

nginx容器已经定义了入口点。 如果你还定义了CMD,它将把它们组合成“入口点CMD”,这样CMD就成为了入口点的参数。 这就是为什么你需要重新定义入口点才能使之工作。

通常ENTRYPOINT是这样定义的,如果你也传递CMD,它将由ENTRYPOINT脚本执行。 但是,每个容器都可能不是这种情况。