2017-03-11 9 views
5

मेरे docker-compose.yml के अंदर, मेरे पास निम्नलिखित servicehealthcheck अनुभाग है। मैं जानना चाहता हूं कि मारिया डीबी वास्तव में प्रश्नों को संभालने के लिए तैयार है या नहीं। service नाम cmdcondition: 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 

यह हेल्थ चेक काम नहीं करता है, यह दिखाता है कि सेवा अस्वास्थ्यकर है।

मैं test सीएमडी के आउटपुट की जांच कैसे करूं?

उत्तर

13

आप उपयोग कर सकते हैं:

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

आउटपुट:

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

और उत्पादन अनुभाग खोजें।

प्राप्त करने के लिए केवल आउटपुट:

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

जो कुछ भी उपकरण आपको json सुंदर प्रिंट के लिए उपयोग के लिए jq स्वैप करने के लिए स्वतंत्र महसूस।

संबंधित मुद्दे