Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

1.6K
Vistas
docker-compose up --exit-code-from sale sin error cuando el sistema bajo prueba falla rápidamente

Estoy creando algunas pruebas de integración para mis imágenes acoplables usando docker-compose . docker-compose tiene una bandera ordenada --exit-code-from para permitir detener todas las ventanas acoplables y devolver el código de salida de la ventana acoplable de prueba una vez que finalizan las pruebas.

Sin embargo, el problema es que --exit-code-from incluye automáticamente el indicador --abort-on-container-exit . Esto es bastante lógico, pero crea el siguiente problema:

Caso normal

  1. el sistema bajo prueba comienza
  2. pruebas de integración ejecutan pruebas y salen con el código de error X
  3. todos los contenedores están parados
  4. se devuelve el código de salida X.

caso problema

  1. el sistema bajo prueba comienza
  2. antes de que las pruebas de integración tengan tiempo de finalizar, el sistema bajo prueba sale con un error
  3. todos los contenedores están parados
  4. ¡se devuelve el código de salida 0! Así que es como si las pruebas tuvieran éxito.

Puede reproducir esto con los siguientes archivos:

Dockerfile

 FROM alpine as development ENTRYPOINT [ "/bin/false" ] FROM alpine as test ENTRYPOINT [ "/bin/sleep", "3" ]

docker-compose.yml

 version: "3.5" services: sut: build: context: . target: development test: build: context: . target: test

y luego corriendo

 docker-compose up --build --exit-code-from test echo $? # print exit code from previous command

que devolverá el código de salida 0.

Me gustaría que el código de salida 0 signifique: las pruebas de integración realmente se ejecutaron y fueron exitosas.

EDITAR: después de ver este problema, https://github.com/docker/compose/pull/6077/commits se fusionó con docker-compose 1.22.0; Volví a ejecutar con la última versión de docker-compose (1.24.1 a partir de ahora), pero todavía me encuentro con mi problema.

over 4 years ago · Santiago Trujillo
1 Respuestas
Responde la pregunta

0

Esta es la única solución que he encontrado hasta ahora. No es la solución más limpia, pero funciona:

 docker-compose up --build --exit-code-from test | grep -q "_test_1 exited with code 0" $TMP

una versión más larga en un script bash limpio con análisis de opciones, que muestra el resultado de docker-compose: https://gist.github.com/chrismaes87/7297d34d356b07a00a5da5f8e425326c

over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda