gpt4 book ai didi

django - 使用docker-compose时Django无法找到数据库

转载 作者:行者123 更新时间:2023-12-02 19:20:47 24 4
gpt4 key购买 nike

Dockerfile

FROM python:3.8

ENV PYTHONUNBUFFERED 1
ENV WORKDIR /usr/src/app

WORKDIR ${WORKDIR}

RUN pip install --upgrade pip && pip install pipenv


COPY ./Pipfile* ${WORKDIR}/

RUN pipenv lock --requirements > requirements.txt

RUN pip install -r requirements.txt

ADD . ${WORKDIR}/

docker-compose.yml
version: '3'

services:
database:
image: postgres:latest
environment:
POSTGRES_PASSWORD: development
POSTGRES_USER: development
POSTGRES_DB: dev_db
ports:
- 5432:5432
backend:
build: .
command: python /usr/src/app/manage.py runserver 0.0.0.0:8000
volumes:
- .:/usr/src/app
ports:
- 8000:8000
depends_on:
- database

Django数据库配置

DATABASES = {
'default': {
'ENGINE': 'django.db.backends.postgresql',
'NAME': 'dev_db',
'USER': 'development',
'PASSWORD': 'development',
'HOST': 'database',
'PORT': 5432,
}
}

但是,当我启动docker compose时,它会显示以下消息:
> Is the server running on host "database" (172.29.0.2) and accepting
TCP/IP connections on port 5432?

谁能提供有关我为什么会出现此错误的指导?据我所知,这两种服务都在同一个网络内

最佳答案

这可能是因为当Django实例就绪时,Postgres仍在启动。

常见的解决方案是使用wait-for之类的脚本来延迟命令的执行,直到服务在特定主机/端口上进行答复为止。

查看有关多个容器的controlling the startup order的Docker文档。

关于django - 使用docker-compose时Django无法找到数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60008378/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com