Sobes.tech
Middle

Para que são usados CMD e ENTRYPOINT no Docker?

sobes.tech IA

Resposta da IA

CMD e ENTRYPOINT determinam qual comando será executado pelo contêiner que inicia.

  • CMD (Comando): Define o comando padrão que será executado ao iniciar o contêiner, se nenhum comando for especificado na chamada ao docker run. Pode conter apenas um arquivo executável ou um arquivo executável com argumentos. Pode ser sobrescrito pelos argumentos do comando docker run.

    # CMD na forma exec
    CMD ["nginx", "-g", "daemon off;"] 
    # CMD na forma shell (não recomendado para produção devido a problemas com sinais)
    # CMD nginx -g "daemon off;" 
    
  • ENTRYPOINT (Ponto de entrada): Define o comando que sempre será executado ao iniciar o contêiner. Os argumentos especificados na chamada ao docker run serão passados a este comando como parâmetros. Frequentemente usado em conjunto com o CMD para definir parte do comando (ENTRYPOINT) e seus argumentos padrão (CMD).

    # ENTRYPOINT na forma exec
    ENTRYPOINT ["/usr/local/bin/my-script.sh"]
    

Comparação entre CMD e ENTRYPOINT:

Característica CMD ENTRYPOINT
Propósito Comando padrão Comando principal que sempre é executado
Capacidade de sobrescrita via docker run Sim (como argumento) Não (apenas via a flag --entrypoint)
Uso com argumentos em docker run Os argumentos do docker run substituem o CMD Os argumentos do docker run são adicionados ao ENTRYPOINT
Uso recomendado Especificar argumentos do arquivo executável Especificar o arquivo executável que será iniciado