others - Django使用docker-compose时找不到数据库

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(等待))来延迟命令的执行,直到服务在特定的主机端口上应答。

作者:
...