错误:yaml.parser.ParserError:解析块映射时

时间:2019-01-22 15:59:54

标签: docker-compose yaml

我正在构建Iroha,为此我正在运行用于环境设置的脚本,该脚本在内部调用docker-compose.yml,在那里我收到错误消息:

ERROR: yaml.parser.ParserError: while parsing a block mapping
  in "/home/cdac/iroha/docker/docker-compose.yml", line 3, column 5
expected <block end>, but found '<scalar>'
  in "/home/cdac/iroha/docker/docker-compose.yml", line 13, column 6

docker-compose.yml文件如下所示。

services:
  node:
    image: hyperledger/iroha:develop-build
    ports:
      - "${IROHA_PORT}:50051"
      - "${DEBUGGER_PORT}:20000"
    environment:
      - IROHA_POSTGRES_HOST=${COMPOSE_PROJECT_NAME}_postgres_1
      - IROHA_POSTGRES_PORT=5432
      - IROHA_POSTGRES_USER=iroha
      - IROHA_POSTGRES_PASSWORD=helloworld
      - CCACHE_DIR=/tmp/ccache
     export G_ID=$(id -g $(whoami))
     export U_ID=$(id -g $(whoami))
    user: ${U_ID:-0}:${G_ID:-0}
    depends_on:
      - postgres
    tty: true
    volumes:
      - ../:/opt/iroha
      - ccache-data:/tmp/ccache
    working_dir: /opt/iroha
    cap_add:
      - SYS_PTRACE
    security_opt:
      - seccomp:unconfined

  postgres:
    image: postgres:9.5
    environment:
      - POSTGRES_USER=iroha
      - IROHA_POSTGRES_PASSWORD=helloworld
    command: -c 'max_prepared_transactions=100'

volumes:
  ccache-data:

我们将不胜感激,谢谢。

2 个答案:

答案 0 :(得分:0)

这些行不属于docker-compose语法

 export G_ID=$(id -g $(whoami))
 export U_ID=$(id -g $(whoami))

此行也将无法按预期工作

user: ${U_ID:-0}:${G_ID:-0}

您应该编写自己的shell脚本并将其用作docker容器的入口点(这应该在Dockerfile步骤中完成),然后直接从您创建的映像运行容器,而不需要分配用户或导出docker-compose中的任何内容,因为一旦容器运行,它将被执行。

检查以下URL,其中包含有关docker-compose中允许的关键字的更多说明:Compose File: Service Configuration Reference

答案 1 :(得分:0)

@MostafaHussein我删除了上述3行,然后执行了run-iroha-dev.sh脚本,它开始工作。它将我附加到docker容器中的/ opt / iroha,并下载了hyperledger / iroha:develop-build和iroha映像,并启动了两个容器。 你的建议是一样的吗?