问题描述
我有一个带有 Docker 的 Django 应用程序,我添加了 postgres 图像并进行了所有设置以创建 postgres db,
但是当我运行包含命令的“docker-compose up”时:
sh -c "python manage.py wait_for_db && python manage.py migrate && python manage.py runserver 0.0.0.0:8000"
当涉及到 migrate
docker-compose.yml:
version: "3"
services:
app:
build:
context: .
ports:
- "8000:8000"
volumes:
- ./app:/app
command: >
sh -c "python manage.py wait_for_db && python manage.py migrate && python manage.py runserver 0.0.0.0:8000"
environment:
- DB_HOST=db
- DB_NAME=app
- DB_USER=postgres
- DB_PASS=supersecretpassword
depends_on:
- db
db:
image: postgres:10-alpine
environment:
- POSTRGES_DB=app
- POSTGRES_USER=postgres
- POSTGRES_PASSWORD=supersecretpassword
Dockerfile:
FROM python:3.7-alpine
MAINTAINER kubousky
ENV PYTHONUNBUFFERED 1
copY ./requirements.txt /requirements.txt
RUN apk add --update --no-cache postgresql-client
RUN apk add --update --no-cache --virtual .tmp-build-deps gcc libc-dev linux-headers postgresql-dev
RUN pip install -r /requirements.txt
RUN apk del .tmp-build-deps
RUN mkdir /app
workdir /app
copY ./app /app
RUN adduser -D user
USER user
settings.py:
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.postgresql','HOST': os.environ.get('DB_HOST'),'NAME': os.environ.get('DB_NAME'),'USER': os.environ.get('DB_USER'),'PASSWORD': os.environ.get('DB_PASS'),}
}
命令的第一部分:
**python manage.py wait_for_db** && python manage.py migrate && python manage.py runserver 0.0.0.0:8000
没问题,因为消息“数据库可用!!!”。
docker-compose run app python manage.py migrate
给出了同样的错误。
我更改了方法以信任 /usr/local/share/postgresql/pg_hba.conf.sample
,但仍然存在同样的问题。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)