继Docker入门指南https://docs.docker.com/get-started/part3/#your-first-docker-composeyml-file之后,我遇到了一个问题。我创建了docker-compose.yml文件并验证了内容是否正确:
version: "3"
services:
web:
image: joshuabelden/get-started:part2
deploy:
replicas: 5
resources:
limits:
cpus: "0.1"
memory: 50M
restart_policy:
condition: on-failure
ports:
- "80:80"
networks:
- webnet
networks:
webnet:
我还证实我可以在群体外面运行我的图像。运行命令后:
docker stack deploy -c docker-compose.yml getstartedlab
我收到以下错误:
Top-level object must be a mapping
我似乎无法找到有关错误消息的任何信息。
答案 0 :(得分:9)
我要解决的问题是我删除了双引号,并将它们作为单引号进行更改 版本:“3” - >版本:'3' 这为我删除了错误,也为所有双引号执行此操作。
答案 1 :(得分:2)
你必须添加"卷"应该复制代码的地方:
version: "3"
services:
web:
image: iconkam/get-started:part2
deploy:
replicas: 5
resources:
limits:
cpus: "0.1"
memory: 50M
restart_policy:
condition: on-failure
volumes:
- .:/app
ports:
- "80:80"
networks:
- webnet
networks:
webnet:
答案 2 :(得分:1)
答案 3 :(得分:0)
有时,这只是文件中的格式。建议您在撰写文件中选择文本,并查看您的某个地方是否有培训空白。
就我而言,我在图片标签后面有一个空格。
答案 4 :(得分:0)
此错误是由文件格式引起的。请尝试将文件编码转换为UTF-8,您将可以运行docker stack deploy
命令。在这里双引号不是问题。
答案 5 :(得分:0)
就我而言,我将所有值都用双引号引起来,将副本期望为固定值。像这样:
version: "3"
services:
web:
# replace username/repo:tag with your name and image details
image: "image details"
deploy:
replicas: 5
resources:
limits:
cpus: "0.1"
memory: "50M"
restart_policy:
condition: "on-failure"
ports:
- "4000:80"
networks:
- "webnet"
networks:
webnet: