Docker-compose çalıştırmasını kullanarak günlük çıktısı nasıl görüntülenir?


96

Kullandığımda docker-compose updosyamdaki tüm kapsayıcıların günlüklerini görebiliyorum docker-compose.yml.

Ancak, kullandığımda docker-compose run appyalnızca konsol çıktısını görüyorum, appancak bağlı olan hizmetlerin hiçbirini görmüyorum app. Diğer hizmetler için günlük çıktısını nasıl görebilirim?


4
Kullanabilirsinizdocker-compose logs -f service_name
Xiongbing Jin

Ayrıca, docker-compose runher çalıştırdığınızda yeni kapsayıcı oluşturduğunu da unutmayın .
jazgot

Im çalışan docker-compose runyeni bir konteyner oluşturursa sadece kendi tamam yani benim testler circleci içinde. Esas sorun, bağımlı hizmetlerden günlük çıktısını görmemek.
sthomps

Yanıtlar:


135

1 Temmuz 2019 Güncellemesi

docker-compose logs <name-of-service>

Gönderen belgeler :

Kullanım: günlükler [seçenekler] [HİZMET ...]

Seçenekler:

- renksiz Siyah beyaz çıktı üretir.

-f, --follow İzleme günlük çıktısı.

-t, --timestamps Zaman damgalarını göster.

--tail = "all" Her kapsayıcı için günlüklerin sonundan itibaren gösterilecek satır sayısı.

Docker günlüklerine bakın

Docker compose'u bağımsız modda başlatabilir ve daha sonra kendinizi tüm konteynerin günlüklerine ekleyebilirsiniz . Eğer günlükleri izlerken bitirdikten Eğer günlükleri çıktı kendinizi ayırabilirisiniz olmadan hizmetlerinizin kapatılıyor.

  1. Tüm hizmetleri bağımsız modda başlatmakdocker-compose up -d için kullanın ( ) (ayrılmış modda herhangi bir günlük görmezsiniz)-d
  2. Kullanım docker-compose logs -f -tiçin takmak günlüklerinden kendinizi çalışan tüm hizmetler , oysa -faracılığıyla size günlük çıkışını takip edip -tseçeneği (See zaman damgalarını verir Docker referans )
  3. Kullanım Ctrl + zveya Ctrl + chiç ayırmak günlük çıkışından kendinizi olmadan sizin çalışan kaplar kapatılıyor

Tek bir kapsayıcının günlükleriyle ilgileniyorsanız, dockerbunun yerine anahtar kelimeyi kullanabilirsiniz :

  1. Kullanım docker logs -t -f <name-of-service>

Çıkışı kaydedin

Çıkışı bir dosyaya kaydetmek için, günlükler komutunuza aşağıdakileri ekleyin:

  1. docker-compose logs -f -t >> myDockerCompose.log

7
Bunun neden kabul edilen cevap olduğunu bilmiyorum. Soru docker-compose çalıştırması ile ilgiliydi ve çoğu zaman bunu -rm ile çalıştırırsınız, böylece günlükler olmaz. Çalıştırırken kabuk betiğinin çıktısını görmek istiyorum.
James O'Brien

2
Bu yararlı bir bilgi olsa da, bu sorunun cevabı DEĞİLDİR. @ JamesO'Brien'ın dediği gibi, soru şu docker-compose runhizmetlerde listelenen hizmetlerden benzersiz isimleri olan hizmetlerle ilgili ve docker.compose.yml
bunlara iliştir

20

Terminalinizdeki tüm hizmetlerden çıktı günlüklerini görmek istiyorsanız .

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

Ör.: Tüm hizmetlerden son 5 satırın çıktısını kaydetmek istediğinizi varsayalım.

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

Belirli hizmetlerden çıktı kaydetmek isterseniz , aşağıdaki gibi yapılabilir:

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

Kullanım:

Örneğin. API ve portal hizmetleriniz olduğunu ve aşağıdaki gibi bir şey yapabileceğinizi söyleyin:

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

5, her iki günlükten son 5 satırı temsil eder.

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


5
  1. kapsayıcıları ayrılmış modda başlatmak için komutu kullanın: docker-compose up -d
  2. kapsayıcıları görüntülemek için şunları kullanın: docker ps
  3. bir kapsayıcı için günlükleri görüntülemek için: docker logs <containerid>

1

Maalesef docker-compose logsayrı çalışmamız gerekiyor docker-compose run. Bunun güvenilir bir şekilde çalışmasını sağlamak için docker-compose runçıkış durumunu gizlememiz, ardından günlüğü yeniden yönlendirmemiz ve doğru durumla çıkmamız gerekir .

#!/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
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.