46 votes

Comment faire pour afficher le menu fixe-composer bilan de santé de logs?

À l'intérieur de mon docker-compose.yml, j'ai le texte suivant service healthcheck section. Je veux savoir si MariaDB est réellement prêt à traiter les requêtes. Un service nommée cmd est configuré de manière à dépendre condition: service_healthy.

  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

Ce bilan de santé ne fonctionne pas, montre que le service est mauvais pour la santé.

Comment puis-je vérifier la sortie de l' test CMD?

87voto

Farhad Farahi Points 12100

Vous pouvez utiliser :

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

Sortie:

{
  "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"

Et de regarder pour la sortie de la section.

Pour obtenir la Sortie:

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

Se sentir libre de swap jq pour n'importe quel outil que vous utilisez pour json jolie impression.

3voto

Nowaker Points 2449

docker-compose ps indiquent l'état de chaque service, y compris sa santé si le bilan de santé est défini. C'est bon pour un aperçu de base.

% docker-compose ps
                Name                                Command                       State                                       Ports                            
----------------------------------------------------------------------------------------------------------------------------------------------------------------
remix-theme-editor_analytics_1            /bin/sh -c /analytics/run. ...   Up                                                                                   
remix-theme-editor_base_1                 /bin/bash                        Exit 0                                                                               
remix-theme-editor_flower_1               /entrypoint --environment  ...   Exit 137                                                                             
remix-theme-editor_frontend_1             /bin/sh -c perl -p -i -e ' ...   Exit 137                                                                             
remix-theme-editor_js-app_1               npm run                          Exit 0                                                                               
remix-theme-editor_mq_1                   docker-entrypoint.sh rabbi ...   Up (healthy)            15671/tcp, 15672/tcp, 25672/tcp, 4369/tcp, 5671/tcp, 5672/tcp
remix-theme-editor_mysql-migration_1      /entrypoint_mysql-migratio ...   Exit 0                                                                               
remix-theme-editor_mysql_1                /bin/sh -c /entrypoint_wra ...   Up (health: starting)   127.0.0.2:3308->3306/tcp                                     
remix-theme-editor_page-renderer_1        npm run start:watch              Up                                                                                   
remix-theme-editor_python-app_1           /entrypoint                      Exit 2                                                                               
remix-theme-editor_redis_1                docker-entrypoint.sh /bin/ ...   Up (health: starting)   6379/tcp                                                     
remix-theme-editor_scheduler_1            /entrypoint --environment  ...   Exit 137                                                                             
remix-theme-editor_socket_1               /entrypoint --environment  ...   Exit 1                                                                               
remix-theme-editor_static-builder_1       npm run watch                    Up                                                                                   
remix-theme-editor_static-http_1          nginx -g daemon off;             Up                      127.0.0.2:6544->443/tcp, 80/tcp                              
remix-theme-editor_web_1                  /entrypoint --environment  ...   Exit 1                                                                               
remix-theme-editor_worker_1               /entrypoint --environment  ...   Exit 1                                                                               
remix-theme-editor_worker_screenshots_1   /entrypoint --environment  ...   Exit 1     

Si vous voulez plus de détails, utilisez docker inspect en conjonction avec d' docker ps -q <service-name>.

% docker inspect --format "{{json .State.Health }}" $(docker-compose ps -q mq) | jq
{
  "Status": "starting",
  "FailingStreak": 48,
  "Log": [
    {
      "Start": "2018-10-03T00:40:18.671527745-05:00",
      "End": "2018-10-03T00:40:18.71729051-05:00",
      "ExitCode": -1,
      "Output": "OCI runtime exec failed: exec failed: container_linux.go:348: starting container process caused \"exec: \\\"nc\\\": executable file not found in $PATH\": unknown"
    },
...

Vous pouvez toujours déboguer le bilan de santé par vous-même tout simplement de l'exécution de votre bilan de santé de code vous-même. Par exemple:

% docker exec -it $(docker-compose ps -q socket) nc -w2 127.0.0.1 5672
(UNKNOWN) [127.0.0.1] 5672 (?) : Connection refused

Vous pouvez également faire la même chose dans le shell:

% docker exec -it $(docker-compose ps -q socket) bash
root@b5da5207d344:~/src# nc -w2 127.0.0.1 5672
(UNKNOWN) [127.0.0.1] 5672 (?) : Connection refused
root@b5da5207d344:~/src# echo $?
1

Enfin, vous pouvez simplement utiliser docker-compose up dans la première fenêtre de terminal, et docker-compose logs -f dans un autre. Cela permet d'afficher tous les journaux de docker-composer-géré conteneurs.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X