2016-07-08 10 views
0

以下のymlファイルを実行している間に、この問題を解決する方法を教えてください。yaml.parser.ParserError:ブロックマッピングの解析中

使用例:

docker-compose -f my.yml up 

私は簡単に変更できるようにYMLファイルをフォーマットするための任意のツールがある私に教えて

my.yml:

version: '2' 
services: 
    ubuntupgcsstateless: 
    image: ubuntupgstatelesscsimage 
    environment: 
     - EXTERNAL_IP=10.31.86.164 
     - EXTERNALDB_IP=10.31.86.165 
     - EXTERNALDB_ADMIN_USER=postgres 
     - EXTERNALDB_ADMIN_PASSWORD=password 
     - DOCBASENAME=DocbaseName 
    hostname: 
     "ubuntupgcsstateless" 
    container_name: 
     "ubuntupgcsstateless" 
    ports: 
    - "1689:1689" 
    - "1690:1690" 
    - "50000:50000" 
    - "50001:50001" 
    - "9080:9080" 
    - "9082:9082" 
    volumes: 
    - DocbaseName_data:/home/dmadmin/dctm/data 
    - DocbaseName_dba:/home/dmadmin/dctm/dba 
    - DocbaseName_share:/home/dmadmin/dctm/share 
    - DocbaseName_dfc:/home/dmadmin/dctm/config 
    - DocbaseName_xhive_storage:/home/dmadmin/dctm/xhive_storage 
    - DocbaseName_mdserver:/home/dmadmin/dctm/wildfly9.0.1/server/DctmServer_MethodServer 
    privileged: true 
volumes: 
DocbaseName_data: 
DocbaseName_dba: 
DocbaseName_share: 
DocbaseName_dfc: 
DocbaseName_xhive_storage: 
DocbaseName_mdserver: 
+0

このソースにはYAMLエラーはありません。これはあなたが解析している正確なソースですか?エラーメッセージに記載されている 'statelesscs_compose.yml'ファイル? – flyx

答えて

1

YAMLますスペースが実際にスペースの場合、エラーは発生しません。だから、あなたのYAMLでTabやその他の隠しキャラクターをチェックしてください。

import ruamel.yaml 

yaml_str = """\ 
version: '2' 
services: 
    ubuntupgcsstateless: 
    image: ubuntupgstatelesscsimage 
    environment: 
     - EXTERNAL_IP=10.31.86.164 
     - EXTERNALDB_IP=10.31.86.165 
     - EXTERNALDB_ADMIN_USER=postgres 
     - EXTERNALDB_ADMIN_PASSWORD=password 
     - DOCBASENAME=DocbaseName 
    hostname: 
     "ubuntupgcsstateless" 
    container_name: 
     "ubuntupgcsstateless" 
    ports: 
    - "1689:1689" 
    - "1690:1690" 
    - "50000:50000" 
    - "50001:50001" 
    - "9080:9080" 
    - "9082:9082" 
    volumes: 
    - DocbaseName_data:/home/dmadmin/dctm/data 
    - DocbaseName_dba:/home/dmadmin/dctm/dba 
    - DocbaseName_share:/home/dmadmin/dctm/share 
    - DocbaseName_dfc:/home/dmadmin/dctm/config 
    - DocbaseName_xhive_storage:/home/dmadmin/dctm/xhive_storage 
    - DocbaseName_mdserver:/home/dmadmin/dctm/wildfly9.0.1/server/DctmServer_MethodServer 
    privileged: true 
volumes: 
DocbaseName_data: 
DocbaseName_dba: 
DocbaseName_share: 
DocbaseName_dfc: 
DocbaseName_xhive_storage: 
DocbaseName_mdserver: 
""" 

data = ruamel.yaml.round_trip_load(yaml_str) 
print(ruamel.yaml.round_trip_dump(data)) 

YAML仕様によって必要とされていないが、あなたがマッピング内のキーのためのスペースの同じ数と一貫してインデントすべき(あなたは1と2スペースを使用し、私は2つのお勧め)、ならびに配列内の要素(再び1と2のスペースを使用します。マッピング値であるシーケンスには0を使用することをお勧めします)。

はあなたのDockerfiledocker-composeで次のことを試してみてください。

version: '2' 
services: 
    ubuntupgcsstateless: 
    image: ubuntupgstatelesscsimage 
    environment: 
    - EXTERNAL_IP=10.31.86.164 
    - EXTERNALDB_IP=10.31.86.165 
    - EXTERNALDB_ADMIN_USER=postgres 
    - EXTERNALDB_ADMIN_PASSWORD=password 
    - DOCBASENAME=DocbaseName 
    hostname: 
     "ubuntupgcsstateless" 
    container_name: 
     "ubuntupgcsstateless" 
    ports: 
    - "1689:1689" 
    - "1690:1690" 
    - "50000:50000" 
    - "50001:50001" 
    - "9080:9080" 
    - "9082:9082" 
    volumes: 
    - DocbaseName_data:/home/dmadmin/dctm/data 
    - DocbaseName_dba:/home/dmadmin/dctm/dba 
    - DocbaseName_share:/home/dmadmin/dctm/share 
    - DocbaseName_dfc:/home/dmadmin/dctm/config 
    - DocbaseName_xhive_storage:/home/dmadmin/dctm/xhive_storage 
    - DocbaseName_mdserver:/home/dmadmin/dctm/wildfly9.0.1/server/DctmServer_MethodServer 
    privileged: true 
volumes: 
    DocbaseName_data: 
    DocbaseName_dba: 
    DocbaseName_share: 
    DocbaseName_dfc: 
    DocbaseName_xhive_storage: 
    DocbaseName_mdserver: 
関連する問題