¿CMD frente a ENTRYPOINT en un Dockerfile?
Opciones
- Son idénticos y cualquiera sirve para todo
ENTRYPOINTfija el programa;CMDda argumentos por defecto que puedes sobrescribir (Opción correcta)CMDse ejecuta una vez en el build;ENTRYPOINT, en cada arranqueENTRYPOINTestá obsoleto, así que hoy solo debe usarseCMD
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.