如何解决Docker 组合 ECS 错误:资源处理程序返回消息:“模型验证失败#/Volumes:数组项不唯一”
我一直在尝试将我的 Postgres + Backend + 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" exists but is not empty"
错误。即使在 docker 主机(使用docker-compose up
)上本地启动 Postgres 也会失败,尽管我没有在那里进一步调查。您有/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
)。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。