问题描述
在使用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
正文完