2016-08-22 19 views
8

compose.yml फ़ाइल है, जो इस तरह दिखता है:डोकर-लिखें फ़ाइल yaml.scanner.ScannerError

version: '2' 
services: 
    discovery-microservice: 
    build: discovery-microservice 
     context: /discovery-microservice/target/docker 
     dockerfile: Dockerfile 
    ports: 
    - "8761:8761" 

हालांकि मैं यह क्रियान्वित कर रहा हूँ मैं निम्नलिखित त्रुटि मिलती है:

yaml.scanner.ScannerError: mapping values are not allowed here 
in "C:\...\docker-compose.yml", line 5, column 14 

मैं क्या देख से , प्रारूप के साथ कुछ भी गलत नहीं है, उदाहरण के लिए सफेद जगह गायब मेरा समग्र लक्ष्य विकास मोड डॉकर-कंपोज़ फ़ाइल निर्दिष्ट करना है, जो इसे विभिन्न मॉड्यूल से लक्षित निर्देशिकाओं को इंगित करता है।
मैं यहाँ क्या गलत कर रहा हूं?

उत्तर

7

सचमुच बाद में समाधान सेकंड मिला। आप "का निर्माण" के बाद "खोज-microservice" को दूर करने के लिए है:

version: '2' 
services: 
    discovery-microservice: 
    build: 
     context: ./discovery-microservice/target/docker 
     dockerfile: Dockerfile 
    ports: 
    - "8761:8761" 

इसके अलावा, आप संबंधित पथ के लिए उपयोग कर सकते हैं "./" संदर्भ में। :)

5

क्या गलत है कि यहाँ है:

build: discovery-microservice 

यदि आपको मानचित्र जो एक प्रमुख build चार रिक्त स्थान से इंडेंट है शुरू करते हैं। उस कुंजी के लिए मूल्य एक अदिश कि discovery-microservice के साथ शुरू होता है और संभव अगली पंक्ति के लिए जारी है, चाहे वह एक ही खरोज स्तर पर एक key: value जोड़ी , इस पर निर्भर या नहीं

क्या इस तरह के एक बहु अदिश अंदर की अनुमति नहीं है यह है कि आपके पास एक अज्ञात :और है जो कि एक अलग इंडेंटेशन स्तर पर है। जो वास्तव में आपके पास है।

पार्सर context एक अलग स्तर की तुलना में build मानता है कि आपके एक अदिश स्ट्रिंग discovery-microservice context जो एक ही लाइन पर का पालन नहीं किया जा सकता है (context के रूप में) एक कॉलन लिख रहे हैं पर इंडेंट देखकर।

अलावा निर्माण के बाद discovery-microservice को हटाने के रूप में आप अपने जवाब में किया था से, क्या इस वैध YAML होगा (लेकिन एक अलग अर्थ के साथ, डोकर लिखें के लिए शायद गैर भावना) कर रहे हैं:

services: 
    discovery-microservice: 
    build: "discovery-microservice 
     context: /discovery-microservice/target/docker" 

और

services: 
    discovery-microservice: 
    build: discovery-microservice 
    context: /discovery-microservice/target/docker" 

डोकर-लिखें संस्करण 2 फ़ाइलों के लिए, build कुंजी एक मानचित्रण (और नहीं ऊपर "समाधान" के रूप में एक अदिश), आपका जवाब सही तरह से कर रही है इस का समाधान करने की उम्मीद है।

7

ठीक बाद : भूल गया, मैं ने वही समस्या डिबग करने के लिए लगभग 3 घंटे बर्बाद किया।

तुम लोग कभी नीचे त्रुटि

ERROR: yaml.scanner.ScannerError: mapping values are not allowed here 
in ".\docker-compose.yml", line 2, column 9 

इसके मिलता है क्योंकि आप की जरूरत है एक जगह की जरूरत है

के बीच संस्करण: '3' < - यह गलत है

संस्करण: ' 3 '< - यह सही है।

इसके अलावा, यदि आप ग्रहण का उपयोग कर रहे हैं, तो अपने आप को एक एहसान दें और YEdit YAML संपादक प्लगइन स्थापित करें