Я бачив купу навчальних посібників, які, здається, роблять те саме, що я намагаюся зробити, але чомусь мій контейнер Docker виходить. В основному я налаштовую веб-сервер і кілька демонів всередині контейнера Docker. Я завершую частину цього за допомогою скрипту bash під назвою, run-all.sh
що я пробігаю CMD у своєму Dockerfile. run-all.sh
виглядає так:
service supervisor start
service nginx start
І я запускаю його всередині мого Dockerfile так:
CMD ["sh", "/root/credentialize_and_run.sh"]
Я бачу, що всі сервіси запускаються правильно, коли я запускаю речі вручну (тобто, переходжу до зображення за допомогою -i -t / bin / bash), і все виглядає так, що воно працює правильно, коли я запускаю зображення, але воно виходить один раз це закінчує запуск моїх процесів. Я хотів би, щоб процеси протікали нескінченно, і наскільки я розумію, контейнер повинен постійно працювати, щоб це відбулося. Тим не менш, коли я бігаю docker ps -a
, я бачу:
➜ docker_test docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
c7706edc4189 some_name/some_repo:blah "sh /root/run-all.sh 8 minutes ago Exited (0) 8 minutes ago grave_jones
Що дає? Чому воно виходить? Я знаю, що я міг просто поставити цикл часу в кінці мого сценарію bash, щоб тримати його, але який правильний спосіб запобігти його виходу?