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, такие как клонирование правильного репо, установка переменных среды, а также запуск супервизора.

Стартовый скрипт начинается с этого

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

когда я вхожу в контейнер, я вижу, что супервизор не запущен, и ни nginx, ни php5-fpm. файл /tmp/start.txt с отметкой времени, установленной из сценария startContainer, не существует, что показывает, что он никогда не запускал CMD в Dockerfile.

Любые подсказки по исправлению этого были бы замечательными


person James Kirkby    schedule 08.02.2016    source источник
comment
вы заменяете CMD своим /bin/bash в своем docker run, так что это нормально, что ваш стартовый скрипт не запустился   -  person user2915097    schedule 08.02.2016


Ответы (1)


Этот:

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

Говорит «запустить /bin/bash» после создания контейнера. Например. пропустить CMD.

Попробуй это:

docker run -d -p expoPort:contPort -t -i -v /$MOUNTED_VOLUME_DIR/$PROJECT:/$MOUNTED_VOLUME_DIR $CONTAINER_ID 
person Sobrique    schedule 08.02.2016
comment
Спасибо, это верно, думал, что вам все равно нужно передать bash в стартовый контейнер - person James Kirkby; 09.02.2016
comment
Это удобный способ переопределить значение по умолчанию. Начните с bash, запустите сценарии, проверьте конфигурацию и т. д., прежде чем запускать демон с помощью сценария запуска. - person Sobrique; 09.02.2016