【问题标题】:Invalid top-level property "external_links"无效的顶级属性“external_links”
【发布时间】:2018-01-08 16:17:07
【问题描述】:

我有以下 docker-compose 文件内容:

version: '3.4'
services:
  local-app:
    build: ./app/
    command: node app
    ports:
      - '7001:7001'
    links:
      - search-svc 
networks:
  docker_app-network:
    external: true
external_links:
  -search-svc

基本上我要做的是将“local-app”容器与另一个已经运行的容器“search-svc”链接起来。通过运行 docker compose 我得到以下错误:

Compose 文件“./docker-compose.yaml”无效,因为: 无效的顶级属性“external_links”。此 Compose 文件的有效顶级部分是:机密、版本、卷、服务、配置、网络和以“x-”开头的扩展。您可能会看到此错误,因为您使用了错误的 Compose 文件版本。指定支持的版本(例如“2.2”或“3.3”)并将您的服务定义放在services 键下,或者省略version 键并将您的服务定义放在文件的根目录以使用版本1。

我已阅读文档,但找不到任何解决问题的方法。 任何人都可以提出任何可能有帮助的建议吗?

提前致谢

【问题讨论】:

    标签: docker docker-compose


    【解决方案1】:

    Yaml 文件对空间敏感。您试图在文件的顶层定义external_links,而不是作为服务的一部分。这在语法上应该是正确的:

    version: '3.4'
    services:
      local-app:
        build: ./app/
        command: node app
        ports:
          - '7001:7001'
        links:
          - search-svc 
        external_links:
          - search-svc
    networks:
      docker_app-network:
        external: true
    

    也就是说,在 docker 中不推荐使用链接,最好使用公共网络(不包括名为 bridge 的默认桥接网络),然后使用集成的 DNS 服务器进行服务发现。看起来您已经定义了公共网络但没有使用它。这会将您的服务放在该网络上并依赖 DNS:

    version: '3.4'
    services:
      local-app:
        build: ./app/
        command: node app
        ports:
          - '7001:7001'
        networks:
          - docker_app-network
    networks:
      docker_app-network:
        external: true
    

    【讨论】:

    • 感谢 BMitch。我删除了链接并按照您的建议添加了网络。现在一切正常。
    猜你喜欢
    • 2021-11-16
    • 2021-06-24
    • 2020-12-05
    • 1970-01-01
    • 2013-12-13
    • 2022-08-10
    • 1970-01-01
    • 1970-01-01
    • 2012-01-14
    相关资源
    最近更新 更多