Ответ
Директива 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"]