Docker Entrypoint: Setting Up a Launch Point for Your Project
Docker entrypoint - это скрипт или исполняемый файл, который запускается при запуске Docker контейнера. Он может использоваться для запуска дополнительной конфигурации или настройки внутри контейнера перед запуском основного приложения или сервиса.
Обычно, entrypoint используется для установки опций конфигурации, которые не могут быть изменены во время запуска контейнера. Например, при запуске Apache внутри контейнера, его конфигурация может быть определена до запуска сервиса.
В файле Dockerfile может быть указана команда ENTRYPOINT, чтобы задать исполняемый файл или скрипт, который будет выполнен при запуске контейнера. Например:
FROM ubuntu:latest
COPY my-script.sh /usr/local/bin/
ENTRYPOINT ["/usr/local/bin/my-script.sh"]
В этом примере, Dockerfile копирует скрипт `my-script.sh` внутрь контейнера и задает его как entrypoint. Когда контейнер запущен, сначала будет запущен этот скрипт.
Можно также использовать команду `CMD` в файле Dockerfile для задания дополнительных аргументов для entrypoint. Например:
FROM ubuntu:latest
COPY my-script.sh /usr/local/bin/
ENTRYPOINT ["/usr/local/bin/my-script.sh"]
CMD ["--help"]
В этом случае, при запуске контейнера, сначала будет запущен скрипт `my-script.sh`, а затем передан аргумент `--help`. При этом, внутри скрипта можно извлечь значение переданного аргумента с помощью `$1`, `$2`, и так далее.
При использовании entrypoint, можно использовать переменные окружения, чтобы передать значения в контейнер. Это может использоваться для настройки конфигурационных файлов или параметров запуска. Например, если в контейнере запускается приложение на Node.js, можно использовать переменную окружения для задания порта:
FROM node:latest
WORKDIR /app
COPY . .
ENV PORT=3000
EXPOSE $PORT
ENTRYPOINT ["node"]
CMD ["app.js"]
В этом примере, мы задаем переменную `PORT` равно 3000 и экспортируем ее за пределы контейнера. Затем `ENTRYPOINT` устанавливает команду `node`, а `CMD` указывает на запуск файла `app.js`. Внутри приложения можно получить значение переменной окружения `PORT` с помощью процесса `process.env`.
Вывод: Docker entrypoint используется для запуска скриптов или исполняемых файлов при запуске контейнера. Он может использоваться для настройки конфигурации и передачи параметров запуска, а также может использовать команду `CMD` для передачи дополнительных аргументов. Внутри скриптов можно использовать переменные окружения для получения значений настроек или параметров запуска.