Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/docker/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Docker编写ECS错误:资源处理程序返回消息:“0”;模型验证失败(“卷:数组项不唯一)”;_Docker_Docker Compose_Amazon Ecs_Prisma - Fatal编程技术网

Docker编写ECS错误:资源处理程序返回消息:“0”;模型验证失败(“卷:数组项不唯一)”;

Docker编写ECS错误:资源处理程序返回消息:“0”;模型验证失败(“卷:数组项不唯一)”;,docker,docker-compose,amazon-ecs,prisma,Docker,Docker Compose,Amazon Ecs,Prisma,我一直在尝试将我的Postgres+后端+Prisma映像部署到Amazon ECS,但遇到以下错误: 资源处理程序返回消息:“模型验证失败(#/Volumes:数组项不唯一)” 我已经被困在这两天,任何帮助将不胜感激。我使用我的Amazon ECS上下文运行docker compose up version: '3.4' services: db: container_name: db ports: - 5432:5432

我一直在尝试将我的Postgres+后端+Prisma映像部署到Amazon ECS,但遇到以下错误:

资源处理程序返回消息:“模型验证失败(#/Volumes:数组项不唯一)”

我已经被困在这两天,任何帮助将不胜感激。我使用我的Amazon ECS上下文运行docker compose up

version: '3.4'
    services:
      db:
        container_name: db
        ports:
          - 5432:5432
        image: postgres:latest
        environment:
          - POSTGRES_USER=[user]
          - POSTGRES_PASSWORD=[password]
        volumes:
          - my-vol:/var/lib/postgresql/data/2
      backend:
        depends_on:
          - db
        container_name: backend
        ports:
          - 4000:4000
        image: [backend image name]
      prisma:
        depends_on:
          - db
        container_name: prisma
        ports:
          - 5555:5555
        image: [prisma image name]
        environment:
          NODE_ENV: production
    volumes:
      my-vol:

AWS集装箱服务团队成员。我从未见过这个错误,但在上面的代码中有一些不正确的地方,使我无法测试它

  • 服务应与版本缩进
  • 如果我尝试使用该卷映射调出(在AWS中)Postgres,它会抛出一个
    “initdb:error:directory”/var/lib/postgresql/data”存在但不是空的“
    错误。Postgres即使在docker主机上本地启动(使用
    docker compose up
    ),也会失败,尽管我没有在那里进一步研究。您有
    /2
    的原因吗?这样行吗
  • 通过指定
    host:container
    端口,可以通过负载平衡器公开所有服务。我假设您只想暴露
    prisma
    容器?还是我误解了你在做什么
这是对你的文章稍加修改的版本,对我来说似乎很好:

version: '3.4'
services:
  db:
    container_name: db
    image: postgres:latest
    environment:
      - POSTGRES_USER=me
      - POSTGRES_PASSWORD=mypassword
    volumes:
      - my-vol:/var/lib/postgresql/data
  backend:
    depends_on:
      - db
    container_name: backend
    image: nginx
  prisma:
    depends_on:
      - db
    container_name: prisma
    ports:
      - 80:80
    image: nginx
    environment:
      NODE_ENV: production  
volumes:
  my-vol:

注意,我刚刚用伪造的nginx图像更改了prisma和后端容器图像,只是为了提升堆栈(我还必须将端口更改为
80:80
)。

这不是将我的prisma端口暴露给容器的正确方法吗?我希望能够使用端口号[IP]:[port_number]访问IP地址,这就是我的想法。我也在镜像Dockerfiles中使用EXPOSE来公开端口,但有人告诉我,这不是正确的方法。如果Prisma容器是堆栈端点(即您要公开的服务),那么您肯定需要为它调用
端口。通过这种方式,“消费者”可以到达Prisma容器,Prisma容器可以在内部与后端容器通信,后端容器可以与postgres通信。但是如果您也为其他容器定义了
端口
,那么它们都将公开在LB上(我假设这不是您想要的?)