Docker堆栈部署有关顶级对象映射的错误

Jos*_*den 6 docker docker-compose

随着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:
Run Code Online (Sandbox Code Playgroud)

我还证实我可以在一群人之外运行我的图像.运行命令后:

 docker stack deploy -c docker-compose.yml getstartedlab
Run Code Online (Sandbox Code Playgroud)

我收到以下错误:

Top-level object must be a mapping
Run Code Online (Sandbox Code Playgroud)

我似乎无法找到有关错误消息的任何信息.

小智 20

您可能在修改 docker-compose.yml 文件后没有保存。因此,如果您在未保存的情况下运行“docker compose up”,则会收到有关顶级对象映射的错误。


小智 14

我解决这个问题的方法是删除双引号并将它们作为单引号更改版本:"3" - > version:'3'这为我删除了错误,也为所有双引号执行此操作.


小智 5

您必须添加应复制代码的“卷”:

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:
Run Code Online (Sandbox Code Playgroud)


Joh*_*het 5

我在 Linux Ubuntu 上使用 Symfony 6,并且遇到了相同类型的问题,但与“docker stack”无关。我在运行时遇到了这个问题:docker-compose up

$ docker-compose up
Top-level object must be a mapping
Run Code Online (Sandbox Code Playgroud)

我搜索了很长时间才找到解决方案。这里描述的解决方案均无效。

事实上,这个问题是由 Symfony 6 中存在默认文件引起的:

docker-compose.override.yml
Run Code Online (Sandbox Code Playgroud)

我评论了里面的所有内容,但这还不够。

重命名该文件使命令“docker-compose up”起作用。删除文件也是一种解决方案;-)