Общие сведения


Информация, представленная на этой странице, применима к приложению, установленному с использованием Docker.

При запуске контейнера сервиса в контейнере может быть выполнен какой-либо скрипт оболочки Bash. Для этого скрипт должен быть размещен в контейнере и иметь флаг исполняемости.

Добавление скрипта в контейнер


Чтобы добавить скрипт в контейнер, смонтируйте в файле docker-compose.yml приложения, для сервиса, в котором необходимо выполнять скрипт, директорию скрипта в операционной системе на директорию /docker-entrypoint.d/ контейнера, например:

volumes:
  - /директория/размещения/скрипта/:/docker-entrypoint.d/

где в директории /директория/размещения/скрипта/ находится исполняемый скрипт:

-rwxr--r-- 1 1001 1001 25 Oct 12 12:37 hello_polymatica.sh

Порядок выполнения скриптов


При запуске контейнера поочередно выполняются все скрипты из директории /docker-entrypoint.d/. Очередность определяется командой sort -V, автоматически применяемой к содержимому директории перед началом выполнения.

Проверка выполнения скрипта


Чтобы убедиться, что скрипт выполнился при запуске, выполните команду docker compose logs, передавая аргументом название сервиса, например:

docker compose logs service-entity-cache || docker-compose logs service-entity-cache

В начале лога находятся записи вида:

service-entity-cache  | /entrypoint.sh: /docker-entrypoint.d/ is not empty, will attempt to perform configuration
service-entity-cache  | /entrypoint.sh: Looking for shell scripts in /docker-entrypoint.d/
service-entity-cache  | /entrypoint.sh: Launching /docker-entrypoint.d/hello_polymatica.sh
service-entity-cache  | Hello Polymatica!
service-entity-cache  | /entrypoint.sh: Configuration complete; ready for start up
service-entity-cache  | starting service

Если для скрипта не установлен флаг исполняемости, это также можно видеть в логе, например:

service-entity-cache  | /entrypoint.sh: /docker-entrypoint.d/ is not empty, will attempt to perform configuration
service-entity-cache  | /entrypoint.sh: Looking for shell scripts in /docker-entrypoint.d/
service-entity-cache  | /entrypoint.sh: Ignoring /docker-entrypoint.d/hello_polymatica.sh, not executable
service-entity-cache  | /entrypoint.sh: Configuration complete; ready for start up
service-entity-cache  | starting service

Если скриптов не найдено, в логе делается соответствующая запись:

/entrypoint.sh: No files found in /docker-entrypoint.d/, skipping configuration
service-entity-cache  | starting service

  • Нет меток