2017-03-11 20 views
5

Wewnątrz mojej docker-compose.yml, mam następujące service sekcji. Chcę wiedzieć, czy MariaDB jest rzeczywiście gotowa do obsługi zapytań. Numer service o nazwie cmd jest skonfigurowany tak, aby zależał od condition: service_healthy.Jak wyświetlać dzienniki funkcji sprawdzania kondycji docker-compose?

db: 
    image: mariadb:10 
    environment: 
     MYSQL_RANDOM_ROOT_PASSWORD: 1 
     MYSQL_USER: user 
     MYSQL_PASSWORD: password 
     MYSQL_DATABASE: database 
    healthcheck: 
     test: ["CMD", "mysql", "--user=user", "--password=password", "--execute='SELECT 1'", "--host=127.0.0.1", "--port=3306"] 
     interval: 1s 
     retries: 30 

Ta kontrola stanu nie działa, pokazuje, że usługa jest niezdrowa.

Jak sprawdzić wyjście CMD test?

Odpowiedz

13

Można użyć:

docker inspect --format "{{json .State.Health }}" <container name> | jq 

wyjściowy:

{ 
    "Status": "unhealthy", 
    "FailingStreak": 63, 
    "Log": [ 
    { 
     "Start": "2017-03-11T20:49:19.668895201+03:30", 
     "End": "2017-03-11T20:49:19.735722044+03:30", 
     "ExitCode": 1, 
     "Output": "ERROR 1064 (42000) at line 1: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near ''SELECT 1'' at line 1\n" 

i szukać wyjściowego sekcji.

Aby dostać tylko wyjściowa:

docker inspect --format "{{json .State.Health }}" mariadb_db_1 | jq '.Log[].Output' 

Zapraszam do wymiany jq niezależnie narzędzie używać do json ładnej druku.