Как добавить скрипт запуска после контейнера при использовании 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,

Идеи?

0 ответов

Другие вопросы по тегам