Docker编写ECS错误:资源处理程序返回消息:“0”;模型验证失败(“卷:数组项不唯一)”;
我一直在尝试将我的Postgres+后端+Prisma映像部署到Amazon ECS,但遇到以下错误: 资源处理程序返回消息:“模型验证失败(#/Volumes:数组项不唯一)” 我已经被困在这两天,任何帮助将不胜感激。我使用我的Amazon ECS上下文运行docker compose upDocker编写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
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,它会抛出一个
错误。Postgres即使在docker主机上本地启动(使用“initdb:error:directory”/var/lib/postgresql/data”存在但不是空的“
),也会失败,尽管我没有在那里进一步研究。您有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上(我假设这不是您想要的?)