容器启动时 Dockerfile CMD 不是 运行

Dockerfile CMD not running at container start

所以我为一个项目写了一个 Dockerfile,我定义了一个 CMD 到 运行 启动容器到 bootstrap 应用程序。

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 事情,例如克隆正确的存储库、设置环境变量以及启动主管。

启动脚本以此开头

#!/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

当我登录到容器时,我看到 supervisor 尚未启动,nginx 或 php5-fpm 也未启动。 /tmp/start.txt 文件不存在从 startContainer 脚本设置的时间戳,显示它从不 运行 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