【问题标题】:how to open a postgres database created with docker in a database client?如何在数据库客户端中打开使用 docker 创建的 postgres 数据库?
【发布时间】:2020-01-21 06:29:40
【问题描述】:

我有一个关于如何在数据库客户端中使用 https://github.com/cookiecutter/cookiecutter 打开使用 docker 创建的数据库的问题

image 1

image 2

image3

编写本地文件

version: '3'

volumes:
  local_postgres_data: {}
  local_postgres_data_backups: {}

services:
  django:
    build:
      context: .
      dockerfile: ./compose/local/django/Dockerfile
    image: tienda_local_django
    depends_on:
      - postgres
    volumes:
      - .:/app
    env_file:
      - ./.envs/.local/.django
      - ./.envs/.local/.postgres
    ports:
      - "8000:8000"
    command: /start

  postgres:
    build:
      context: .
      dockerfile: ./compose/production/postgres/Dockerfile
    image: tienda_production_postgres
    volumes:
      - local_postgres_data:/var/lib/postgresql/data
      - local_postgres_data_backups:/backups
    env_file:
      - ./.envs/.local/.postgres

【问题讨论】:

  • 这和django-rest-framework有什么关系?
  • 你能扩展这个来说明你的实际问题是什么吗?

标签: django postgresql docker django-rest-framework docker-compose


【解决方案1】:

容器上的端口是否映射?尝试使用 127.0.0.1(假设它在同一台机器上)作为本地客户端中的主机,而不是容器名称。如果这不起作用,您可以分享您的 docker-compose.yaml

【讨论】:

  • 我使用 127.0.0.1 更改主机并告诉我它的错误:致命:没有“调试”角色
【解决方案2】:

您没有在 docker-compose 中的容器/服务之间建立网络:

您可以通过多种方式实现这一目标:

  1. link between containers/services。这是一种已弃用的方式,但取决于您的 docker 版本是否仍然有效。添加到您的 docker-compose 文件中:
django:
  ...
  links:
   - postgres
  1. Connect services to the same network。添加到您的两个服务定义中:
networks:
     - django

另外,你需要在 docker-compose 文件中 define network django

networks
  django:
  1. Connect your services via a host network。只需添加到这两个服务定义:
network: host

【讨论】:

  • Docker Compose creates a network for you,就好像你在这些地方指定了networks: [default]。您在此处描述的内容都不是必需的。
  • @DavidMaze 我知道...但是,例如,如果您连接到主机,那么问题将得到解决,因为实际上两个服务都可以访问 localhost。
猜你喜欢
  • 2014-12-23
  • 1970-01-01
  • 2012-02-17
  • 2014-01-17
  • 1970-01-01
  • 1970-01-01
  • 2018-07-26
  • 2023-03-12
  • 1970-01-01
相关资源
最近更新 更多