Docker Compose + Postgres:公开端口

时间:2018-09-29 10:03:03

标签: postgresql docker docker-compose

我目前正在尝试将Docker用于新的Django / Postgres项目。我在Mac上工作,通常使用Postico快速连接到我的数据库。

我以前像这样连接: enter image description here

我使用了正式的Docker文档来设置docker-compose。我现在遇到的问题是,我无法通过Postico连接到postgres db。在我看来,问题出在端口未暴露。

enter image description here

有人可以帮助我吗?

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

2 个答案:

答案 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/