我正在构建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:
我们将不胜感激,谢谢。
答案 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映像,并启动了两个容器。 你的建议是一样的吗?