2016-08-22 16 views
8

compose.yml tập tin, mà trông như thế này:tập tin Docker-Soạn có yaml.scanner.ScannerError

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

Trong khi tôi đang thực hiện nó tôi nhận được lỗi sau:

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

Từ những gì tôi nhìn thấy , không có gì sai với định dạng, ví dụ thiếu trắng. Mục tiêu tổng thể của tôi là chỉ định một tệp docker-compose chế độ phát triển, trỏ nó đến các thư mục đích từ các mô-đun khác nhau.
Tôi đang làm gì sai ở đây?

Trả lời

7

Đã tìm thấy giải pháp sau vài giây. Bạn phải xóa "discovery-microservice" sau khi "build":

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

Ngoài ra, bạn có thể sử dụng "./" trong ngữ cảnh cho đường dẫn tương đối. :)

5

gì là sai trái là ở đây:

build: discovery-microservice 

bạn bắt đầu một ánh xạ trong đó có một chìa khóa build thụt bởi bốn không gian. Giá trị cho khóa đó là đại lượng vô hướng bắt đầu với discovery-microservice và có thể tiếp tục dòng tiếp theo, tùy thuộc vào việc có một key: value cặp ở mức thụt đầu dòng cùng hay không

gì không được phép vào bên trong một vô hướng multiline như vậy là bạn có một số không giới hạn là : ở mức thụt lề khác nhau. Đó là chính xác những gì bạn làm.

Các phân tích cú pháp nhìn thấy context thụt vào ở mức độ khác nhau hơn build giả sử bạn đang viết một chuỗi vô hướng discovery-microservice context mà không thể được theo dõi trên cùng một dòng (như context) bằng dấu hai chấm.

Ngoài loại bỏ discovery-microservice sau khi xây dựng như bạn đã làm trong câu trả lời của bạn, những gì cũng sẽ làm cho YAML hợp lệ này (nhưng với một ý nghĩa khác nhau, có lẽ không phải là ý nghĩa đối với Docker soạn) là:

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

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

Đối với bản docker-compose phiên bản 2, khóa build hy vọng ánh xạ (và không phải là vô hướng như trong "giải pháp" ở trên), làm cho câu trả lời của bạn đúng cách để giải quyết vấn đề này.

3

Và tôi quên : sau version

version '2' 
7

Ok, tôi lãng phí khoảng 3 giờ để gỡ lỗi một vấn đề tương tự.

Nếu bạn đã bao giờ nhận được lỗi dưới đây

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

của nó bởi vì bạn cần một không gian là cần thiết giữa

phiên bản: '3' < - điều này là sai

phiên bản: ' 3 '< - điều này là chính xác.

Ngoài ra, nếu bạn đang sử dụng nhật thực, hãy tự làm ơn và cài đặt trình chỉnh sửa YEdit YAML plugin

Các vấn đề liên quan