2016-07-05 8 views
1

Я создал образ из Dockerfile:Не удается запустить mosquitto как сервис на Docker контейнер

FROM debian:latest 

RUN apt-get update && apt-get install -y \ 
mosquitto \ 
&& rm -rf /var/lib/apt/lists/* 

# mosquitto setup 
EXPOSE 1883 
COPY config/broker/conf.d/ /etc/mosquitto/conf.d/ 
CMD mosquitto 

Это работает, но я хотел бы начать mosquitto как услуга (это рекомендуется вообще?). Но когда я заменить последнюю строку с

CMD service mosquitto start 

служба не запускается & I контейнер не работает (но я не получаю сообщение об ошибке во время создания образа)

ответ

0

в служба не запускается & I контейнер не работает

Проверить докер пс -a, чтобы увидеть, если контейнер только вышел: для вашего контейнера для запуска, вам необходимо убедиться, что его основной процесс остается на переднем плане и делает не выходить немедленно.

Попробуйте изображение докера toke/docker-mosquitto, чтобы узнать, сохранились ли контейнеры от него.

+0

Это то, что я пытался сказать: после 'docker start' и' docker ps -a' мой контейнер состояния 'exited'. Я хотел бы использовать свой собственный файл Docker, потому что я это делаю. Больше. Dockerfile выше - это всего лишь минимальный фрагмент для воспроизведения. – Munchkin

+0

@Munchkin Это означает, что ваша основная команда запускается и немедленно выходит. Попробуйте настроить изображение так, как это делает https://github.com/toke/docker-mosquitto. – VonC

+0

Я просто просмотрел этот репо. Создает ли 'CMD ["/usr/sbin/mosquitto "," -c "," /mqtt/config/mosquitto.conf "]' запуск mosquitto как службы, например 'service mosquitto start'? – Munchkin

0

Использование контейнера в качестве способа запуска службы хоста кажется мне недостающим в контейнерах. Приложения, которые являются «контейнерами», должны быть такими, чтобы их можно было запускать/останавливать в любое время. Если вы хотите иметь многолетний контейнер, который предоставляет службу, которую вы хотите всегда запускать, добавьте опцию --restart=always к вашей команде запуска docker. Таким образом, когда хост запускается/перезапускается, а служба Docker запускается, ваш контейнер также автоматически запускается. Хороший список do's & не касается контейнерных приложений The 12 Factor App

 Смежные вопросы

  • Нет связанных вопросов^_^