Что такое entrypoint \ cmd ?

Спросят с вероятностью 20%



ENTRYPOINT и CMD — это две инструкции, которые определяют команду и параметры, исполняемые при запуске контейнера. Они похожи, но служат немного разным целям и взаимодействуют между собой определенным образом.



ENTRYPOINT



Определяет исполняемый файл, который будет запущен при старте контейнера. Он фактически устанавливает постоянную базовую команду, к которой затем можно добавить дополнительные аргументы при запуске контейнера. Это можно использовать, например, чтобы сделать контейнер ведущим себя как исполняемый файл.

# Используется официальный образ Python

FROM python:3.8



# Устанавливаем рабочий каталог

WORKDIR /app



# Копируем исходный код в контейнер

COPY . /app



# Устанавливаем зависимости

RUN pip install -r requirements.txt



# Устанавливаем entrypoint

ENTRYPOINT ["python", "app.py"]




В этом примере, он устанавливает команду python app.py как команду, которая будет выполнена при запуске контейнера.



CMD



Предоставляет аргументы по умолчанию для ENTRYPOINT. Если ENTRYPOINT не указан, то он также может быть использован для указания исполняемой команды. Однако, если ENTRYPOINT указан, CMD предоставляет дополнительные аргументы к этой команде.

# Используется официальный образ Python

FROM python:3.8



# Устанавливаем рабочий каталог

WORKDIR /app



# Копируем исходный код в контейнер

COPY . /app



# Устанавливаем зависимости

RUN pip install -r requirements.txt



# Устанавливаем entrypoint и cmd

ENTRYPOINT ["python"]

CMD ["app.py"]




В этом случае ENTRYPOINT устанавливает команду python, а CMD предоставляет файл app.py как аргумент по умолчанию. Если при запуске контейнера указать другие аргументы, например docker run myimage hello.py, то CMD будет перезаписан, и вместо app.py будет выполнен hello.py.



ENTRYPOINT задает основную команду контейнера, а CMD предоставляет аргументы по умолчанию для этой команды. ENTRYPOINT как бы говорит "всегда выполняй это", а CMD добавляет "если не сказано иначе, используй эти параметры".



👉 Можно посмотреть Примеры как отвечают люди на этот вопрос, или перейти К списку 1119 вопросов на DevOps. Ставь 👍 если нравится контент



🔐 База собесов | 🔐 База тестовых