【问题标题】:Container not picking up existing Volume or Network when running from docker-compose.yml从 docker-compose.yml 运行时容器未拾取现有卷或网络
【发布时间】:2020-06-25 13:10:09
【问题描述】:

我创建了一个 docker-compose 文件,它将启动 Kabana 和 ElasticSearch 容器。我已经在我的虚拟机中为这些创建了一个网络和卷。我正在使用 docker compose 3.4 版。

命令:docker volumes ls

DRIVER              VOLUME NAME
local               elasticsearch-data
local               portainer_data

命令:docker volumes ls

NETWORK ID          NAME                 DRIVER              SCOPE
75464cd8c8ab        bridge               bridge              local
587a311f6f4f        host                 host                local
649ac00b7f93        none                 null                local
4b5923b1d144        stars.api.web        bridge              local

命令:docker-compose up -d

ERROR: yaml.scanner.ScannerError: mapping values are not allowed here
  in "./docker-compose.yml", line 33, column 27

docker-compose.yml

version: '3.4'

services:
  elasticsearch:
    image: docker.elastic.co/elasticsearch/elasticsearch:7.6.0
    container_name: elasticsearch
    ports:
      - "9200:9200"
    volumes:
      - elasticsearch-data:/usr/share/elasticsearch/data
    networks:
      - stars.api.web
    environment:
      ES_JAVA_OPTS: "-Xmx256m -Xms256m"
      ELASTIC_PASSWORD: changeme
      discovery.type: single-node
    ulimits:
      memlock:
        soft: -1
        hard: -1

  kibana:
    image: docker.elastic.co/kibana/kibana:7.6.0
    container_name: kibana
    ports:
      - "5601:5601"
    depends_on:
      - elasticsearch
    networks:
      - stars.api.web

volumes:
  name: elasticsearch-data:

networks:
  name: stars.api.web:

编辑: 从名称中删除 :,例如 name: elasticsearch-data 会引发以下错误:

ERROR: In file './docker-compose.yml', volume 'name' must be a mapping not a string.

【问题讨论】:

  • 您是否尝试过从name: elasticsearch-data: 中删除第二个:?您还应该将卷声明为 external external: true,因为您已经创建了它。
  • name: stars.api.web: 相同。
  • @leopal 当我添加external: true 我得到volume 'external' must be a mapping not a boolean.
  • 只声明顶级条目怎么样? volumes: my-data-volume-name: 和服务 > db: image: db volumes: - my-data-volume-name:/var/lib/db

标签: docker docker-compose


【解决方案1】:

根据docs,您的 yaml 无效。

请使用以下撰写文件:

version: '3.4'

services:
  elasticsearch:
    image: docker.elastic.co/elasticsearch/elasticsearch:7.6.0
    container_name: elasticsearch
    ports:
      - "9200:9200"
    volumes:
      - elasticsearch-data:/usr/share/elasticsearch/data
    networks:
      - stars.api.web
    environment:
      ES_JAVA_OPTS: "-Xmx256m -Xms256m"
      ELASTIC_PASSWORD: changeme
      discovery.type: single-node
    ulimits:
      memlock:
        soft: -1
        hard: -1

  kibana:
    image: docker.elastic.co/kibana/kibana:7.6.0
    container_name: kibana
    ports:
      - "5601:5601"
    depends_on:
      - elasticsearch
    networks:
      - stars.api.web

volumes:
  elasticsearch-data:
    external: true

networks:
  stars.api.web:

我假设您已经创建了定义的卷和网络。请注意,在 docker-compose 上下文之外创建卷时需要 external: true

【讨论】:

    【解决方案2】:

    此外,还有一个检查 Compose 文件是否有效的好方法:

    docker-compose -f file config
    

    如果省略备用文件,则默认采用docker-compose.yml

    来自帮助页面:

    config:验证并查看 Compose 文件

    在应用@leopal 建议的编辑后, 如果你想要一个“相当”的输出,

    $ docker-compose -f docker-compose.yaml config -q 
    
    $ docker-compose -f your.yaml config
    
    
    networks:
      stars.api.web: {}
    services:
      elasticsearch:
        container_name: elasticsearch
        environment:
          ELASTIC_PASSWORD: changeme
          ES_JAVA_OPTS: -Xmx256m -Xms256m
          discovery.type: single-node
        image: docker.elastic.co/elasticsearch/elasticsearch:7.6.0
        networks:
          stars.api.web: null
        ports:
        - published: 9200
          target: 9200
        ulimits:
          memlock:
            hard: -1
            soft: -1
        volumes:
        - elasticsearch-data:/usr/share/elasticsearch/data:rw
      kibana:
        container_name: kibana
        depends_on:
        - elasticsearch
        image: docker.elastic.co/kibana/kibana:7.6.0
        networks:
          stars.api.web: null
        ports:
        - published: 5601
          target: 5601
    version: '3.4'
    volumes:
      elasticsearch-data: {}
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-05-28
      • 1970-01-01
      • 1970-01-01
      • 2019-01-19
      • 1970-01-01
      • 2017-06-25
      • 2022-01-24
      相关资源
      最近更新 更多