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