2016-08-22 17 views
8

compose.yml plik, który wygląda tak:Docker-Compose plik ma yaml.scanner.ScannerError

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

Chociaż ja wykonując go pojawia się następujący błąd:

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

z tego co widzę , nic nie jest nie tak z formatem, np białe spacje. Moim ogólnym celem jest określenie pliku dokowanego do tworzenia w trybie deweloperskim, wskazując go docelowym katalogom z różnych modułów.
Co ja tu robię źle?

Odpowiedz

7

Dosłownie znalazłem rozwiązanie sekund później. Trzeba usunąć „odkrycie-microservice” po „budować”:

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

Również można użyć „./” w kontekście dla ścieżek względnych. :)

5

Co jest nie tak, że jest tutaj:

build: discovery-microservice 

rozpocząć mapowanie, które odgrywa kluczową build wcięty o czterech przestrzeniach. Wartość tego klucza jest skalarne, które rozpoczyna się discovery-microservice i możliwe przechodzi do następnej linii, w zależności od tego, czy ma key: value parę na tym samym poziomie wcięcia lub nie

Co nie jest dozwolone wewnątrz takiej wielowierszowego skalara jest to, że masz niecytowane :i mieć to na innym poziomie wcięcia. Dokładnie to, co masz.

Parser widząc context wgniatany na innym poziomie niż build zakłada piszesz skalarnego ciąg discovery-microservice context, które nie mogą być stosowane w tej samej linii (jak context) dwukropkiem.

Oprócz usuwania discovery-microservice po kompilacji jak ty w swojej odpowiedzi, co byłoby również, aby ten ważny YAML (ale w innym znaczeniu, prawdopodobnie non-sens dla Döcker Compose) są:

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

i

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

dla Döcker-komponować wersja 2 plików, klucz build spodziewa odwzorowanie (a nie jak w skalarne „rozwiązań” powyżej), dzięki czemu odpowiedź poprawny sposób rozwiązania tego problemu.

7

Ok, ja zmarnowany około 3 godziny, aby debugować podobny problem.

Jeśli wy kiedykolwiek poniższy błąd

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

jego ponieważ trzeba potrzebna jest przestrzeń pomiędzy

wersja: '3' < - to jest złe

wersja: ' 3 '< - to prawda.

Ponadto, jeśli używasz zaćmienie, zrobić sobie przysługę i zainstaluj YEdit YAML redaktor wtyczki

Powiązane problemy