docker-compose run app python manage.py migrate 结果在 psycopg2:数据库“app”不存在

问题描述

我有一个带有 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

时它失败了

enter image description here

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'),}
}

enter image description here

命令的第一部分: **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 (将#修改为@)