Repaso
English
Cloud y DevOpsIntermedioOPS-04

¿CMD frente a ENTRYPOINT en un Dockerfile?

Opciones

  1. Son idénticos y cualquiera sirve para todo
  2. ENTRYPOINT fija el programa; CMD da argumentos por defecto que puedes sobrescribir (Opción correcta)
  3. CMD se ejecuta una vez en el build; ENTRYPOINT, en cada arranque
  4. ENTRYPOINT está obsoleto, así que hoy solo debe usarse CMD

Respuesta

ENTRYPOINT fija el ejecutable; CMD da argumentos por defecto que se sobrescriben fácilmente en docker run

Por qué

Ambos definen qué se ejecuta cuando arranca el contenedor.

ENTRYPOINT es el programa fijo (por ejemplo gunicorn). CMD da argumentos por defecto, que puedes reemplazar añadiendo argumentos a docker run image ....

Usa la forma JSON ["gunicorn", "app:app"] para que tu app corra como proceso principal y reciba bien las señales de parada.

Recuerda

ENTRYPOINT = el programa. CMD = sus argumentos por defecto.

Términos clave

Practica esta pregunta en Repaso