当前位置: 首页 > 面试题库 >

Django docker-无法将主机名“ db”转换为地址:提供的节点名或服务名,或者未知

何建中
2023-03-14
问题内容

我是Django和Docker的新手,并且正在关注构建迷你应用程序的教程。但是,我陷入了以下错误:

django.db.utils.OperationalError: could not translate host name "db" to address: nodename nor servname provided, or not known

我的docker-compose文件如下所示:

 version: '3'
 services:
  db:
     image: 'postgres'
     ports:
       - '5432'
  core:
    build:
      context: .
      dockerfile: Dockerfile
    command: python3 manage.py runserver 0.0.0.0:8000
    ports:
      - '8000:8000'
    volumes:
      - .:/code
    depends_on:
      - db
    links:
      - db:db

我的settings.py文件包含数据库:

DATABASES = {
'default': {
    'ENGINE': 'django.db.backends.postgresql',
    'NAME': 'postgres',
    'USER': 'postgres',
    'HOST': 'db',
    'PORT': 5432,
}
}

希望能得到一些指导。谢谢。


问题答案:

因此,您正在尝试从另一个容器访问在一个容器中运行的数据库?如果是,以下内容可能会有所帮助,至少当我遇到类似问题时,它对我有所帮助。

除撰写文件中的 链接 外,尝试定义 网络
配置,创建具有某些名称的网络,然后在两个服务中均对其进行定义。像描述在这里,作为在码头上 的链接 配置建议这样做。 __ __

对于您的情况,如下所示:

version: '3'
 services:
  db:
     image: 'postgres'
     ports:
       - '5432'
     networks:
      some_network:
  core:
    build:
      context: .
      dockerfile: Dockerfile
    command: python3 manage.py runserver 0.0.0.0:8000
    ports:
      - '8000:8000'
    volumes:
      - .:/code
    depends_on:
      - db
    links:
      - db:db
    networks:
      some_network:
  networks:
   some_network:

它帮助我解析了主机名以连接到数据库。



 类似资料:
  • 问题内容: 我正在尝试使用Raspberry Pi建立VPN,第一步是要能够从本地网络外部进入设备。无论出于何种原因,这都是不可能的,我也没有丝毫的暗示。当我尝试使用进入服务器时,出现错误: 但是,我可以使用以下方式登录服务器: 该服务器是运行最新版本Raspbian的Raspberry Pi Model B,而我尝试与其连接的计算机是运行Mavericks的Macbook Pro。当我设置Ras

  • 问题内容: 在我的java应用程序中,如果用户输入IP,我们需要显示主机名,如果给出了主机名,那么我们需要显示主机的IP。 例如,如果用户输入IP地址,则应显示应用程序,反之亦然。 有可用的工具来执行此操作吗? 问题答案: 如果您使用Java进行编码,请尝试使用

  • 我严格遵守这里的指示https://docs.github.com/en/authentication/connecting-to-github-with-ssh 我运行以下(我的用户名输入在 知道哪里可能出问题吗?

  • 本文向大家介绍Python将主机名转换为IP地址的方法,包括了Python将主机名转换为IP地址的方法的使用技巧和注意事项,需要的朋友参考一下 关于主机名转IP地址只记住两点即可: 1、英特网协议一直都是用4字节的IP将包转发给目的地; 2、至于主机名是如何转换成IP地址的,这是操作系统关心的事情; 输出: 以上这篇Python将主机名转换为IP地址的方法就是小编分享给大家的全部内容了,希望能给大

  • 问题内容: 当我尝试将网页加载到终端时,它给出了错误。 我的PC上有互联网,并尝试通过家庭互联网连接。因此,我这里没有任何代理人参与。 并再次尝试,但并不幸运。 但是,如果我使用IP代替域名,则可以正常工作。 有什么线索吗? 问题答案: 问题是: 启用IPV6 DNS服务器错误 这是我的解决方法: IPV6禁用 开放终端 键入并输入登录为超级用户 输入root密码 键入将目录更改为 键入以在那里创

  • 问题内容: 我在Mac OS X上使用自制软件设置了jenkins,它 可以通过主机正常工作,或者无法通过主机名/ ipaddress访问jenkins实例: 即使从本地计算机(詹金斯主机本身)也无法访问这两个链接。同时执行命令并正常工作。 问题答案: 事实证明,启动代理配置为仅侦听127.0.0.1(或localhost)。要修复该詹金斯经纪人的plist: 并修改为而不是