Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

819
Views
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 answers
Answer question

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 Report

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!