Информация, представленная на этой странице, применима к приложению, установленному с использованием 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-manager|| docker-compose logs service-manager |
В начале лога находятся записи вида:
service-manager | /entrypoint.sh: /docker-entrypoint.d/ is not empty, will attempt to perform configuration service-manager | /entrypoint.sh: Looking for shell scripts in /docker-entrypoint.d/ service-manager | /entrypoint.sh: Launching /docker-entrypoint.d/hello_polymatica.sh service-manager | Hello Polymatica! service-manager | /entrypoint.sh: Configuration complete; ready for start up service-manager | starting service |
Если для скрипта не установлен флаг исполняемости, это также можно видеть в логе, например:
service-manager | /entrypoint.sh: /docker-entrypoint.d/ is not empty, will attempt to perform configuration service-manager | /entrypoint.sh: Looking for shell scripts in /docker-entrypoint.d/ service-manager | /entrypoint.sh: Ignoring /docker-entrypoint.d/hello_polymatica.sh, not executable service-manager | /entrypoint.sh: Configuration complete; ready for start up service-manager | starting service |
Если скриптов не найдено, в логе делается соответствующая запись:
/entrypoint.sh: No files found in /docker-entrypoint.d/, skipping configuration service-manager | starting service |