【问题标题】:Docker: Reconnect new postgres container to existing Data containerDocker:将新的 postgres 容器重新连接到现有的 Data 容器
【发布时间】:2016-04-02 06:45:09
【问题描述】:

我有 3 个码头集装箱。一个运行 django,另一个运行 postgres,第三个是 postgres 的数据容器。我正在使用 docker-compose 将它们链接起来。

docker-compose.yml

dbdata:
  image: postgres
  container_name: dbdata_container
  volumes:
    - ./data:/var/lib/postgresql/data
  command: true

db:
  image: postgres
  container_name: postgres_container
  ports:
    - "5432:5432"
  volumes_from:
    - dbdata

web:
  build: .
  container_name: django_container
  command: python manage.py runserver 0.0.0.0:8000
  volumes:
    - .:/code
  ports:
    - "8000:8000"
  links:
    - db

我错误地删除了我的 postgres 容器。

如何创建一个新的 postgres 容器来连接现有的数据容器?

我试过跑步:

docker-compose up

失败并出现以下错误:

web_1    | django.db.utils.OperationalError: could not translate host name "db" to address: Name or service not known

当我使用 PgMastero 连接到 postgres 时,我只能看到其中的任何表。

请帮忙

【问题讨论】:

  • Jahan,除非您删除本地目录 ./data,否则您的数据库将完好无损。检查您的 db 容器是否有权写入卷。
  • 谢谢,我认为它不需要对权限做任何事情。我现在以同一个用户身份运行所有三个容器,实际上是 root。 @ThiagoKronig

标签: django postgresql docker docker-compose docker-volume


【解决方案1】:

找到了解决办法。在这里更新它,这样它可能会帮助其他可能面临同样问题的人。

我认为一旦 postgres 容器被删除,链接就会变得混乱。

因此,如果我执行docker-compose up,docker 将无法与我认为仍指向已删除容器的 db 容器链接,或者新容器被赋予不同的链接名称。

删除所有三个容器并执行docker-compose up 就可以了。我不确定这是为什么,可能是 docker-compose 模块中的一些错误。

【讨论】:

    猜你喜欢
    • 2020-04-10
    • 1970-01-01
    • 2016-07-20
    • 2020-11-20
    • 2020-02-19
    • 1970-01-01
    • 2020-03-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多