Итак, я написал 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.
Любые подсказки по исправлению этого были бы замечательными
/bin/bash
в своемdocker run
, так что это нормально, что ваш стартовый скрипт не запустился - person user2915097   schedule 08.02.2016