¿Cómo ver la salida del registro usando docker-compose run?

96

Cuando lo uso docker-compose up, puedo ver los registros de todos los contenedores en mi docker-compose.ymlarchivo.

Sin embargo, cuando uso docker-compose run app, solo veo la salida de la consola, apppero ninguno de los servicios de los que appdepende. ¿Cómo puedo ver la salida del registro para los otros servicios?

sthomps
fuente
4
Puede usardocker-compose logs -f service_name
Xiongbing Jin
También tenga en cuenta que docker-compose runcrea un nuevo contenedor cada vez que lo ejecuta.
jazgot
Estoy corriendo docker-compose runen circleci solo para ejecutar mis pruebas, así que está bien si crea un nuevo contenedor. El problema principal es simplemente no ver la salida del registro de los servicios dependientes.
sthomps

Respuestas:

135

Actualización 1 de julio de 2019

docker-compose logs <name-of-service>

De la documentación :

Uso: registros [opciones] [SERVICIO ...]

Opciones:

--no-color Produce una salida monocromática.

-f, --follow Sigue la salida del registro.

-t, --timestamps Muestra las marcas de tiempo.

--tail = "all" Número de líneas para mostrar desde el final de los registros para cada contenedor.

Ver registros de Docker

Puede iniciar Docker compose en modo separado y adjuntarse a los registros de todos los contenedores más tarde. Si ha terminado de ver los registros, puede desconectarse de la salida de los registros sin cerrar sus servicios.

  1. Úselo docker-compose up -dpara iniciar todos los servicios en modo separado ( -d) (no verá ningún registro en modo separado)
  2. Úselo docker-compose logs -f -tpara adjuntarse a los registros de todos los servicios en ejecución , mientras que -fsignifica que sigue la salida del registro y la -topción le brinda marcas de tiempo (consulte la referencia de Docker )
  3. Use Ctrl + zo Ctrl + cpara desconectarse de la salida del registro sin apagar sus contenedores en ejecución

Si está interesado en los registros de un solo contenedor, puede usar la dockerpalabra clave en su lugar:

  1. Utilizar docker logs -t -f <name-of-service>

Guarda la salida

Para guardar la salida en un archivo, agregue lo siguiente a su comando de registros:

  1. docker-compose logs -f -t >> myDockerCompose.log
Bruno Bieri
fuente
7
No sé por qué esta es la respuesta aceptada. La pregunta era sobre la ejecución de docker-compose y muchas veces lo ejecuta con -rm para que no haya registros. Me gustaría ver la salida del script de shell mientras lo estoy ejecutando.
James O'Brien
2
Si bien esta es información útil, NO es una respuesta a la pregunta. Como dijo @ JamesO'Brien, la pregunta se trata de docker-compose runy adjuntar a esos servicios, que tienen nombres únicos de los servicios enumerados endocker.compose.yml
TetraDev
20

Si desea ver los registros de salida de todos los servicios en su terminal.

docker-compose logs -t -f --tail <no of lines> 

Por ejemplo: digamos que le gustaría registrar la salida de las últimas 5 líneas de todos los servicios

docker-compose logs -t -f --tail 5

Si desea registrar la salida de servicios específicos , puede hacerlo de la siguiente manera:

docker-compose logs -t -f --tail <no of lines> <name-of-service1> <name-of-service2> ... <name-of-service N>

Uso:

P.ej. digamos que tiene API y servicios de portal, entonces puede hacer algo como a continuación:

docker-compose logs -t -f --tail 5 portal api

Donde 5 representa las últimas 5 líneas de ambos registros.

Ref: https://docs.docker.com/v17.09/engine/admin/logging/view_container_logs/

Invencible
fuente
5
  1. use el comando para iniciar contenedores en modo separado: docker-compose up -d
  2. para ver los contenedores use: docker ps
  3. para ver los registros de un contenedor: docker logs <containerid>
akshaya pandey
fuente
1

Desafortunadamente, necesitamos ejecutar por docker-compose logsseparado docker-compose run. Para que esto funcione de manera confiable, debemos suprimir el docker-compose runestado de salida, luego redirigir el registro y salir con el estado correcto.

#!/bin/bash
set -euo pipefail
docker-compose run app | tee app.log || failed=yes
docker-compose logs --no-color > docker-compose.log
[[ -z "${failed:-}" ]] || exit 1
Nathan
fuente