Для чего нужен Entrypoint в Docker

«Для чего нужен Entrypoint в Docker» — вопрос из категории Docker, который задают на 26% собеседований Devops Инженер. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Директива ENTRYPOINT в Dockerfile определяет исполняемую команду, которая будет запущена при старте контейнера. Её ключевая особенность — она задаёт основную программу контейнера, а аргументы, переданные в docker run, добавляются к ней, а не перезаписывают.

Пример Dockerfile:

FROM alpine:latest
ENTRYPOINT ["echo", "Hello"]
CMD ["World"]

Как это работает:

  • docker run my-image выполнит echo Hello World.
  • docker run my-image DevOps выполнит echo Hello DevOps (аргумент "DevOps" заменил значение CMD).
  • Полностью переопределить ENTRYPOINT можно только флагом --entrypoint.

Практическое применение в DevOps: ENTRYPOINT часто используется для обёрток-скриптов, которые выполняют предварительную настройку (например, загрузку секретов, валидацию переменных окружения) перед запуском основного приложения.

FROM python:3.11-slim
COPY entrypoint.sh /entrypoint.sh
RUN chmod +x /entrypoint.sh
ENTRYPOINT ["/entrypoint.sh"]
CMD ["python", "app.py"]