Docker组成变量替换成为一个数字

时间:2017-12-20 19:36:06

标签: docker docker-compose

我正在尝试在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.

1 个答案:

答案 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-b2372f2a81cc5911e04cc7df7d68675bR148cpus选项。

但是,如果我们查看必须与https://github.com/docker/compose/pull/5291/files#diff-b2372f2a81cc5911e04cc7df7d68675bR139处的转化匹配的正则表达式,我们可以看到它是^0[0-9]+$。此正则表达式与单个数字不匹配。但它应该匹配01

所以,听起来很傻,你可以尝试将号码更改为04而不是4吗?