这个docker服务是否暴露在互联网上?

我有一套在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密码公开共享会有多糟糕。 攻击者可以使用它来访问我的数据库吗?

您应该阅读有关Dockernetworking与撰写文件在这里 – > https://docs.docker.com/compose/networking/ 。 后续文档将是 – > https://docs.docker.com/compose/compose-file/#links

在示例中,您可以学习如何链接容器(web < – > db)。 因此,你只需要暴露web前端端口而不是db端口。

从上面的链接修改示例(未testing):

 version: "3" services: app: build: ./app networks: - backend ports: - "80:80" db: image: postgres networks: - backend networks: backend: driver: overlay