Dockerfile CMD不在容器启动时运行

所以我写了一个项目的Dockerfile,我已经定义了一个CMD运行在启动容器来引导应用程序。

Dockerfile看起来像

# create our mount folders and volumes ENV MOUNTED_VOLUME_DIR=sites RUN mkdir /$MOUNTED_VOLUME_DIR ENV PATH=$MOUNTED_VOLUME_DIR/sbin:$MOUNTED_VOLUME_DIR/common/bin:$PATH RUN chown -Rf www-data:www-data /$MOUNTED_VOLUME_DIR # Mount folders VOLUME ["/$MOUNTED_VOLUME_DIR/"] # Expose Ports EXPOSE 443 # add our environment variables to the server ADD ./env /env # Add entry point script ADD ./start.sh /usr/bin/startContainer RUN chmod 755 /usr/bin/startContainer # define entrypoint command CMD ["/bin/bash", "/usr/bin/startContainer"] 

start.sh脚本,做一些git的东西,如克隆正确的回购,设置环境variables,以及启动主pipe。

启动脚本以此开始

 #!/bin/bash now=$(date +"%T") echo "Container Start Time : $now" >> /tmp/start.txt /usr/bin/supervisord -n -c /etc/supervisord.conf 

我开始像这样的新容器

 docker run -d -p expoPort:contPort -t -i -v /$MOUNTED_VOLUME_DIR/$PROJECT:/$MOUNTED_VOLUME_DIR $CONTAINER_ID /bin/bash 

当我login到容器时,我发现主pipe还没有启动,也没有nginx或php5-fpm。 具有从startContainer脚本设置的时间戳的/tmp/start.txt文件不存在,显示它从不在Dockerfile中运行CMD。

任何提示,以得到这个固定将是伟大的

这个:

 docker run -d -p expoPort:contPort -t -i -v /$MOUNTED_VOLUME_DIR/$PROJECT:/$MOUNTED_VOLUME_DIR $CONTAINER_ID /bin/bash 

实例化容器后说'run / bin / bash'。 例如跳过CMD

尝试这个:

 docker run -d -p expoPort:contPort -t -i -v /$MOUNTED_VOLUME_DIR/$PROJECT:/$MOUNTED_VOLUME_DIR $CONTAINER_ID