我是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:
它帮助我解析了主机名以连接到数据库。