【问题标题】:While running "docker-compose up" getting Error "ERROR: yaml.scanner.ScannerError: mapping values are not allowed here"运行“docker-compose up”时出现错误“错误:yaml.scanner.ScannerError:此处不允许映射值”
【发布时间】:2019-05-20 07:48:01
【问题描述】:

运行“docker-compose up”时出错

错误:yaml.scanner.ScannerError:此处不允许映射值 在“./docker-compose.yml”中,第 8 行,第 14 列

我的 docker 撰写文件如下;

postgres:
  image: postgres:9.4.21
  environment:
    POSTGRES_USER: myusername
    POSTGRES_PASSWORD: myPass
    ports:
      -'5432:5432'
    volumes:
          ~/.docker-volumes/mobydock/postgresql/data:/var/lib/postgresql/data

      redis:
        image: redis: 5.0.5
        ports:
          - '6379:6379'
          volumes:
             ~/.docker-volumes/mobydock/redis/data:/var/lib/redis/data

            mobydock:
              build: .
              command: gunicorn -b 0.0.0.0:8000 --reload --access-logfile - "mobydock.app:create_app()"
              environment:
                PYTHONUNBUFFERED: true
                links:
                  - postgres
                  - redis
                volumes:
                  - .:/mobydock
                  ports:
                    - '8000:8000'

我已尝试更改卷路径之前的一些标志。

我想用 postgres 和 redis 图像组成 docker 文件。 我是 Docker 的初学者,第一次这样做。

【问题讨论】:

    标签: docker docker-compose


    【解决方案1】:

    您的主要问题是 YAML 语法不被尊重 - 如果您是 YAML 新手,您可以在网络上找到大量资源 - 例如:

    • 每个映射的缩进必须使用两个空格
    • 列出元素(例如卷或端口)时,您必须为列表中的每个元素使用-
    • 当使用带有 YAML 字符的字符串(例如 :)时,最好引用它们(即 image: "redis:5.0.5" 而不是 image: redis: 5.0.5

    您还有一些与 docker-compose 语法相关的问题:

    • Volumes 不是一个合适的列表,您最好使用绝对路径而不是相对路径(不要在 Compose 中使用 ~/path),例如:

      volumes:
        - /home/user/.docker-volumes/mobydock/redis/data:/var/lib/redis/data
      
    • 在您的文件中,image 将被读取为volumes 的一个元素,即您的缩进不正确。而不是使用:

      # YAML will interpret image as being under the volume key
      volumes:
        - /home/user/.docker-volumes/mobydock/redis/data:/var/lib/redis/data
        image: [...]
      

      你应该有:

      # mind the space indentation !
      volumes:
        - /home/user/.docker-volumes/mobydock/redis/data:/var/lib/redis/data
      image: [...]
      

      大多数其他元素也存在此缩进错误,请检查Docker Compose 语法以了解每个元素的顺序。

    您可以使用 YAML Linter,例如 as this one 来帮助解决这些 YAML 语法问题。

    【讨论】:

      【解决方案2】:
      postgres:
        image: postgres:9.4.21
        environment:
          POSTGRES_USER: myusername
          POSTGRES_PASSWORD: myPass
        ports:
          -'5432:5432'
        volumes:
          - ~/.docker-volumes/mobydock/postgresql/data:/var/lib/postgresql/data
      
      redis:
        image: redis: 5.0.5
        ports:
          - '6379:6379'
        volumes:
          - ~/.docker-volumes/mobydock/redis/data:/var/lib/redis/data
      
      mobydock:
        build: .
        command: gunicorn -b 0.0.0.0:8000 --reload --access-logfile - "mobydock.app:create_app()"
        environment:
          PYTHONUNBUFFERED: true
        links:
          - postgres
          - redis
        volumes:
          - .:/mobydock
        ports:
          - '8000:8000'
      

      yaml 是缩进敏感的

      【讨论】:

      • 注意卷中的- ;)
      【解决方案3】:

      volumes 是一个列表,所以你应该写:

      volumes:
        - ~/.docker-volumes/mobydock/redis/data:/var/lib/redis/data
      

      而且你的文件缩进不正确,应该这样写:

      postgres:
        image: "postgres:9.4.21"
        environment:
          POSTGRES_USER: myusername
          POSTGRES_PASSWORD: myPass
        ports:
          -'5432:5432'
        volumes:
          - ~/.docker-volumes/mobydock/postgresql/data:/var/lib/postgresql/data
      
      redis:
        image: "redis:5.0.5"
        ports:
          - '6379:6379'
        volumes:
          - ~/.docker-volumes/mobydock/redis/data:/var/lib/redis/data
      
      mobydock:
        build: .
        command: 'gunicorn -b 0.0.0.0:8000 --reload --access-logfile - "mobydock.app:create_app()"'
        environment:
          PYTHONUNBUFFERED: true
        links:
          - postgres
          - redis
        volumes:
          - .:/mobydock
        ports:
          - '8000:8000'
      

      【讨论】:

        猜你喜欢
        • 2015-12-14
        • 1970-01-01
        • 2020-01-17
        • 2019-07-12
        • 1970-01-01
        • 2012-02-21
        • 2016-07-13
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多