我正在尝试在addEventSource
中使用变量替换来设置CPU数量。
使用此撰写文件:
test.yml
docker-compose.yml
由此脚本运行:
test.sh
version: "2.2"
services:
neo4j:
image: neo4j:3.2
cpus: ${MAX_CPUS}
我收到此错误:
#!/bin/sh
export MAX_CPUS=4
docker-compose -f test.yml up -d
正在正确读取变量。如果使用此撰写文件
$ ./test.sh
ERROR: The Compose file './test.yml' is invalid because:
services.neo4j.cpus contains an invalid type, it should be a number
然后我得到一个使用替换值的错误:
version: "2.2"
services:
neo4j:
image: neo4j:3.2
#cpus: ${MAX_CPUS}
volumes:
- ${MAX_CPUS}:/foo
看起来变量替换被解释为字符串,即使该值是数字。
有没有办法强制它到一个数字,假设这是问题?
我使用docker-machine在Mac OS X上运行。
ERROR: Named volume "4:/foo:rw" is used in service "neo4j" but no declaration was found in the volumes section.
答案 0 :(得分:0)
我搜索了Docker Compose GitHub问题并找到了https://github.com/docker/compose/issues/2730。这听起来与你的问题非常相似。它在拉取请求https://github.com/docker/compose/pull/5291中得到修复,其中为插值添加了类型转换器。它出现以支持每行https://github.com/docker/compose/pull/5291/files#diff-b2372f2a81cc5911e04cc7df7d68675bR148的cpus
选项。
但是,如果我们查看必须与https://github.com/docker/compose/pull/5291/files#diff-b2372f2a81cc5911e04cc7df7d68675bR139处的转化匹配的正则表达式,我们可以看到它是^0[0-9]+$
。此正则表达式与单个数字不匹配。但它应该匹配01
。
所以,听起来很傻,你可以尝试将号码更改为04
而不是4
吗?