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

Docker compose 撰写扩展文件会导致验证错误,docker-compose,Docker Compose,您好,我有两个compose文件,一个描述如何组织服务(docker compose.yml),另一个描述如何构建相同服务的映像(docker compose.build.yml)。我不确定以这种方式拆分单个文件是否有意义,但我刚刚发现了这个特性,并想进行实验 我的观点是,当我使用docker compose build web时,从一个文件开始,一切都很好。 当我在上面定义的2中分割文件并使用 docker-compose-f docker-compose.yml-f docker-compo

您好,我有两个compose文件,一个描述如何组织服务(docker compose.yml),另一个描述如何构建相同服务的映像(docker compose.build.yml)。我不确定以这种方式拆分单个文件是否有意义,但我刚刚发现了这个特性,并想进行实验

我的观点是,当我使用
docker compose build web
时,从一个文件开始,一切都很好。 当我在上面定义的2中分割文件并使用
docker-compose-f docker-compose.yml-f docker-compose.build.yml构建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):

拆分后,第一个文件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
version: '2'

services:
  web:
    build:
      context: ./applications/web
      args:
      - VCS_REF
      - BUILD_DATE
      - http_proxy
第二个文件docker-compose.build.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
version: '2'

services:
  web:
    build:
      context: ./applications/web
      args:
      - VCS_REF
      - BUILD_DATE
      - http_proxy
这个简单的例子在我的实验中不起作用。在继续之前,我希望对该功能有信心。例如专门为我们的CI编写文件

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

docker compose版本1.6.2,构建4d72027

Docker版本1.10.3,内部版本20f81dd


使用PyYAML时,(services.???)web.build.args可能是一个数组,而不是docker compose所声明的(contains)null


看起来像只虫子。我会尝试使用最新发布的版本(1.8.1),如果它仍然在github上出现问题。

看起来像个bug。我会尝试使用最新发布的版本(1.8.1),如果它仍然在Github上出现问题,我的第一个猜测是我做错了什么。使用compose 1.8.1,谢谢@dnephin@dnephin,你应该把它写在答案中,以便Yohann可以选择它并给你应得的分数:-)