No se puede iniciar el contenedor desde la imagen de la ventana acoplable/Está fallando si agregamos CMD para iniciar filebeat o fluentd agent

No se puede iniciar el contenedor desde la imagen de la ventana acoplable/Está fallando si agregamos CMD para iniciar filebeat o fluentd agent

No puedo iniciar el contenedor desde la imagen de la ventana acoplable que se compila desde debajo de Dockerfile. Está fallando si agregamos CMD para iniciar filebeat o fluentd agent.

archivo acoplable

#################################################
FROM node:12
#install pm2
RUN npm install pm2 -g
RUN apt update
#create dir and copy the code
RUN mkdir -p /home/devops/comera_registration_service/
WORKDIR  /home/devops/comera_registration_service/
COPY . .
#fluentd install
COPY fl.sh . 
RUN sh fl.sh
#install depend
RUN npm install
#start the app
CMD [ "pm2-runtime", "ecosystem.config.js" ]
CMD ["/etc/init.d/td-agent", "start" ]  
#opening port
EXPOSE 3010

ingrese la descripción de la imagen aquí

ingrese la descripción de la imagen aquí

Respuesta1

La node:12imagen tiene unascript de punto de entrada. Cuando ENTRYPOINTse especifica an, Docker usará los valores en CMDcomoparámetros para este comando de punto de entrada.

El punto de entrada de la imagen principal se puede desactivar agregando lo siguiente a su Dockerfile:

ENTRYPOINT []

Como nota al margen, cuando CMDse especifican varias instrucciones en un Dockerfile, solo la última se configurará en la imagen resultante.

Con el Dockerfile anterior y el punto de entrada principal eliminado, /etc/init.d/td-agentserá el PID 1 del contenedor. Dado que se trata de un script de inicio, se cerrará cuando termine de iniciar el demonio. Cuando el PID 1 desaparezca, el contenedor saldrá.

Para ejecutar múltiples programas dentro de un contenedor,Se necesita un script contenedor o un administrador de procesos.. Tenga en cuenta que esto generalmente no se recomienda. P.ej. en Kubernetes se prefiere el patrón de contenedor sidecar.

información relacionada