无效的顶级属性“external_links”

时间:2018-01-08 16:17:08

标签: docker docker-compose

我有以下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,我收到以下错误:

  

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

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

提前致谢

1 个答案:

答案 0 :(得分:2)

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