我目前正在尝试将Docker用于新的Django / Postgres项目。我在Mac上工作,通常使用Postico快速连接到我的数据库。
我使用了正式的Docker文档来设置docker-compose。我现在遇到的问题是,我无法通过Postico连接到postgres db。在我看来,问题出在端口未暴露。
有人可以帮助我吗?
version: '3'
services:
db:
image: postgres
web:
build: .
command: python3 manage.py runserver 0.0.0.0:8000
volumes:
- .:/code
ports:
- "8000:8000"
depends_on:
- db
答案 0 :(得分:2)
只需将端口映射到主机,然后将其添加到Compose文件中的db
服务中即可。
ports:
- "5432:5432"
还要确保在这样的撰写文件中设置postgres password变量
environment:
POSTGRES_PASSWORD: example
默认用户为postgres,您可以使用POSTGRES_USER
变量进行更改。
您可以在此处使用所有选项来了解图像的用法:https://hub.docker.com/_/postgres/
答案 1 :(得分:0)
默认情况下,Compose 会为您的应用设置一个网络。
可以通过撰写文件中的服务名称访问每个容器。
在您的情况下,您不必将端口暴露给主机,以便您的 Web 应用程序可以访问它。您可以简单地将 db
用作 postgres 的主机名(以及 5432
用于端口),来自在同一组合上运行的任何其他服务。
其实docker compose文档中提供了一个非常相似的例子: https://docs.docker.com/compose/networking/