撰写扩展文件会导致验证错误

时间:2016-10-07 08:27:50

标签: docker-compose

您好我有两个撰写文件,一个描述如何组织服务(docker-compose.yml),另一个用于构建相同服务的图像(docker-compose.build.yml)。我不确定以这种方式拆分单个文件是否有意义,但我刚刚发现了这个功能并希望对其进行实验。

当我使用docker-compose build web时,我的观点来自单个文件,一切正常。 当我在上面定义的2中拆分文件并使用时 docker-compose -f docker-compose.yml -f docker-compose.build.yml build web 我收到以下错误:

ERROR: Validation failed, reason(s):
web.build.args contains null, which is an invalid type, it should be a string, or a number

单个文件看起来像(single docker-compose.yml):

version: '2'

services:
  web:
    image: registry.private:5000/mycompany/web:dev
    restart: unless-stopped
    ports:
    - "9000:9000"
    environment:
    - SQL_URL=jdbc:mysql://mysql:3306/mydb
    build:
      context: ./applications/web
      args:
      - VCS_REF
      - BUILD_DATE
      - http_proxy

分割后,第一个文件docker-compose.yml如下所示:

version: '2'

services:
  web:
    image: registry.private:5000/mycompany/web:dev
    restart: unless-stopped
    ports:
    - "9000:9000"
    environment:
    - SQL_URL=jdbc:mysql://mysql:3306/mydb

第二个文件docker-compose.build.yml看起来像:

version: '2'

services:
  web:
    build:
      context: ./applications/web
      args:
      - VCS_REF
      - BUILD_DATE
      - http_proxy

这个简单的例子在我的实验中不起作用。我希望在进一步发展之前对该功能充满信心。比如专门为我们的CI撰写文件。

如果有人能告诉我哪里弄错了。感谢。

docker-compose版本1.6.2,build 4d72027

Docker版本1.10.3,build 20f81dd

使用PyYAML它会发生(services.???)web.build.args是一个数组而不是docker-compose声称它是一个(包含)null。

Python 2.7.6 (default, Jun 22 2015, 17:58:13) 
[GCC 4.8.2] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> from yaml import load, dump
>>> document = """
... services:
...   web:
...     build:
...       context: ./applications/web
...       args:
...       - VCS_REF
...       - BUILD_DATE
...       - http_proxy
...       - app_path=target/universal/web-0.1-SNAPSHOT.tgz
... """
>>> print load(document)
{'services': {'web': {'build': {'args': ['VCS_REF', 'BUILD_DATE', 'http_proxy', 'app_path=target/universal/web-0.1-SNAPSHOT.tgz'], 'context': './applications/web'}}}}

1 个答案:

答案 0 :(得分:0)

看起来像个错误。我会尝试使用最新发布的版本(1.8.1),如果它仍然在github上打开了一个问题。