Как добавить скрипт запуска после контейнера при использовании Phusion baseimage-docker и его процесса my_init?
Мы используем в качестве нашей базы Docker
изображение, базовый образ док-станции Phusion (мы фактически используем образ пассажирского докера в качестве нашего базового образа, который в свою очередь использует baseimage-docker
и my_init
обсуждение здесь на baseimage-docker
уровень).
Он имеет четко определенный процесс для вставки наших собственных сценариев в startup
, pre_shutdown
, а также post_shutdown
этапы жизненного цикла контейнера, описанные здесь. Наш процесс заключается в простом копировании сценариев, которые мы хотим запустить в Dockerfile
как так
COPY app_startup.sh /etc/my_init.d/app_startup.sh
COPY app_pre_shutdown.sh /etc/my_init.pre_shutdown.d/app_pre_shutdown.sh
COPY app_post_shutdown.sh /etc/my_init.post_shutdown.d/app_post_shutdown.sh
А потом my_init
подхватывает их как часть своего процесса. Копаться в my_init
сам сценарий, я могу видеть, где происходит выполнение этих дополнительных сценариев, например, для запуска он вызывается в main
функция main: run_startup_files и функция run_startup_files, которую вы видите, которая вызывает скрипты, добавленные в каталог.
Точно так же я вижу, где они обрабатывают pre_shutdown
а также post_shutdown
,
То, что я хотел бы знать, есть ли способ продолжать использовать это my_init
обработать и быть в состоянии добавить шаг после запуска, который вызывает сценарий, определенный для изображения? Это будет отличаться от последнего шага запуска через этот процесс, скорее это будет одна из первых вещей, которые будут выполнены после того, как контейнер запущен и все другие шаги, my_init
шаги выполняются непосредственно (или находятся ниже по потоку от него) при запуске завершены.
Я не уверен, но мне кажется, что my_init
на самом деле просто сохраняется в течение всего жизненного цикла контейнера на этом этапе, поэтому не уверен, где этот шаг будет добавлен к тому, что уже является частью my_init
,
Я бы предпочел сделать этот шаг после запуска способом, который соответствует тому, как это my_init
процесс работает уже вместо того, чтобы поддерживать my_init
сценария, чтобы мы могли продолжать использовать версию сценария Phusion по мере его обновления в будущем, но если в настоящее время нет другого способа сделать это, было бы полезно увидеть рекомендуемый способ изменения и реализации нашего собственного my_init
скрипт для этого.
Может быть, есть что-то, что можно использовать вне my_init
это часть стандартного процесса запуска и запуска сервера Ubuntu, который вступает во владение после my_init
контейнер уже запущен (с помощью команды, которую он порождает), такой как cron-like / run-once, когда контейнер запускается, или какой-то другой шаг init-ish, который выполняется без необходимости смещения или изменения my_init
,
Идеи?