【发布时间】:2019-09-24 07:39:16
【问题描述】:
我正在尝试 dockerize 我的 Django-postgres 应用程序并使用 docker-compose 运行 2 个命令 我的 Dockerfile 是:
FROM python:3
ENV PYTHONUNBUFFERED 1
RUN mkdir /code
WORKDIR /code
ADD requirements.txt /code/
RUN pip install -r requirements.txt
ADD . /code/
我的 docker-compose.yml 是:
version: '3'
services:
web:
build: .
command: bash -c "python app/manage.py migrate && python app/manage.py runserver 0.0.0.0:8000"
volumes:
- .:/code
ports:
- "8000:8000"
depends_on:
- db
db:
image: postgres
ports:
- "5432:5432"
environment:
POSTGRES_PASSWORD: password
我的设置 .py 有以下数据库代码:
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.postgresql',
'NAME': 'postgres',
'USER': 'postgres',
'PASSWORD': 'password',
'HOST': 'db',
'PORT': '5432',
}
}
当我运行时,我的 db 和 web 容器已启动:
docker-compose run web python app/manage.py migrate
docker-compose run web python app/manage.py runserver 0.0.0.0:8000
但是当我跑步时
docker-compose up
它失败并出现错误:
web_1 | django.db.utils.OperationalError: could not connect to server: Connection refused web_1 | Is the server running on host "db" (172.23.0.2) and accepting web_1 | TCP/IP connections on port 5432?
谁能帮我找出哪里出错了?
【问题讨论】:
-
可能你的 db docker 镜像出现了,但是在 Django 启动时 postgres 没有启动。