Общие сведения
Информация, представленная на этой странице, применима к приложению, установленному с использованием 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