Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

817
Visualizações
Reinicie el contenedor Docker en el bloqueo del proceso interno

Actualización: causa secreta encontrada - nodemon

La respuesta es simplemente configurar el contenedor para que se reinicie en caso de bloqueo. En desarrollo, estoy usando nodemon, que evita que el proceso se cierre en caso de bloqueo, por lo que supuse que el bloqueo del proceso no provocó la salida del contenedor. Mi error. El bloqueo del proceso, de hecho, hace que el contenedor se cierre cuando se usa node y no nodemon .

 { "scripts": { "development:service": "nodemon ./service/server.js", "production:service": "node ./service/server.js" } }

Pregunta inicial

¿Cómo reinicio un contenedor docker cuando falla un proceso dentro del contenedor?

¿La mejor manera sería configurar --autorestart ON_FAILURE para el contenedor y luego hacer que el contenedor se bloquee cuando el proceso interno se bloquee? Si es así, ¿cómo obligo al contenedor a bloquearse cuando uno de sus procesos falla?

Estoy usando el node:10.15.3 .

Enlace útil: cómo hacer que un contenedor se reinicie si el mismo contenedor falla

Dockerfile

 FROM node:10.15.3 ENV NODE_ENV development # Create application directory. RUN mkdir -p /src WORKDIR /src # Install app dependencies and build. ADD . /src RUN yarn install --force RUN ["chmod", "+x", "./run.sh"] CMD [ "./run.sh" ]

Procesos (simplificados)

 USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND user 13 0.0 0.1 17952 2840 ? S 15:09 0:00 bash ./install.sh user 72 0.5 3.2 889668 66728 ? Sl 15:09 0:00 /usr/local/bin/node /opt/yarn-v1.13.0/bin/yarn.js start user 97 2.4 3.2 919992 65748 ? Sl 15:09 0:01 /usr/local/bin/node ./service/server.js
over 4 years ago · Santiago Trujillo
2 Respostas
Responde à pergunta

0

Puede usar el indicador --restart para el comando de ejecución de docker https://docs.docker.com/engine/reference/commandline/run/#restart-policies---restart

Ejemplo: docker run --restart=on-failure my-image-name

O si está utilizando docker-compose, restart: on-failure para el servicio https://docs.docker.com/compose/compose-file/#restart

over 4 years ago · Santiago Trujillo Relatório

0

Cuando ejecuta varios servicios en un contenedor y está muy, muy seguro de que desea esto (lo mejor es ejecutar un solo proceso en un solo contenedor), es posible que desee un supervisor de procesos (por ejemplo, systemd ) que reinicie cualquier proceso bloqueado. dentro, o fallar si alguno de sus procesos supervisados falla.

También hay otras formas, más livianas, de lograr esto, como un script bash de contenedor.

Todo se describe aquí: https://docs.docker.com/config/containers/multi-service_container/

Editar después de que la pregunta se actualizó con Dockerfile:

La forma más fácil es probablemente asegurarse de que run.sh se bloquee si alguno de sus subprocesos se bloquea. Luego, el contenedor se bloqueará y, opcionalmente, se reiniciará si usa --restart=on-failure en docker run .

over 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda