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(等待))來延遲命令的執行,直到服務在特定的主機埠上應答。

作者:
...