据我所知,拒绝从互联网访问带有数据库的 Docker 容器(在我的例子中是 Postgres)是基本的安全措施。但怎么做呢?我当前的 docker-compose.yaml 是:
version: "3.5"
services:
Database:
image: postgres
container_name: Example-Production-Database
ports: [ "${DATABASE_PORT}:${DATABASE_PORT}" ]
environment:
- POSTGRES_PASSWORD=${DATABASE_PASSWORD}
volumes:
- DatabaseData:/data/example.jp
volumes:
DatabaseData: {}
您没有显示
[ "${DATABASE_PORT}:${DATABASE_PORT}" ]
中的内容,但是
我认为它会翻译成类似 '5432:5432'
的东西,相当于 短格式:
ports:
- 0.0.0.0:5432:5432/tcp
意味着默认情况下您将端口发布给外界查看(
0.0.0.0
)。将其更改为:
ports:
- 127.0.0.1:5432:5432
并且该端口仅绑定到本地主机,外部任何人都无法再访问它。