我有一套在DigitalOcean主机上运行的docker服务(由docker-compose
编排)。
摘自docker-compose.yml
:
web:
build: backend_api_using_db
ports:
- "80:80"
depends_on:
- db
db:
image: postgres
请注意,Docker Hub上的postgres
图像描述提到它的Dockerfile有一个EXPOSE 5432
(postgresql的默认端口),这就是为什么我的web
服务可以成功连接到它。
是否可以从主机(互联网)外部直接连接到我的postgres数据库?从内部(ssh-> localhost)怎么样?
我问这个是因为我想知道如果我的postgres密码被公开分享会有多糟糕。攻击者可以使用它来访问我的数据库吗?
答案 0 :(得分:0)
您应该在此处阅读有关Docker网络和撰写文件的信息 - > https://docs.docker.com/compose/networking/。后续文件将是 - > https://docs.docker.com/compose/compose-file/#links
在显示的示例中,您可以了解如何链接容器(web< - > db)。因此,您只需要公开Web前端端口而不是数据库端口。
上面链接中的修改示例(未测试):
version: "3"
services:
app:
build: ./app
networks:
- backend
ports:
- "80:80"
db:
image: postgres
networks:
- backend
networks:
backend:
driver: overlay