Docker Compose卷未正常工作的原因

94次阅读
没有评论

问题描述

在使用Docker Compose时遇到了一个问题,他的卷没有与容器一起创建。每次尝试运行或使用在线验证器验证yaml文件时,都会显示正确的验证结果,但无法运行,报错信息如下:

ERROR: In file './docker-compose.yaml', service 'image' must be a mapping not a string.

用户无法理解为什么在线验证器显示它是有效的yaml文件,但仍然无法运行。

解决方案

请注意以下操作注意版本差异及修改前做好备份。

方案1

根据回答1,你需要在docker-compose.yml文件中指定容器名称(这里使用变量CONTAINER_NAME),你可以将其命名为postgres_server或其他名称。以下是修改后的docker-compose.yml文件示例:

version: "3.7"
services:
  CONTAINER_NAME:
    image: postgres
    environment:
      - POSTGRES_DB=postgres
      - POSTGRES_USER=postgres
      - POSTGRES_PASSWORD=postgres
    build: .
    command: python manage.py runserver 0.0.0.0:8000
    volumes:
      - .:/app
    ports:
      - "8000:8000"
    depends_on:
      - db

在上面的示例中,我们将服务的名称修改为CONTAINER_NAME,并将其设置为postgres_server。这样就可以解决服务’image’必须是映射而不是字符串的错误。
请注意,这只是一个示例,你可以根据自己的需求修改服务的名称和其他配置。
参考来源:https://stackoverflow.com/questions/56733841/service-image-must-be-a-mapping-not-a-string

正文完