1

Need to run project via docker containers. I need to mount existing database to postgres container. Have the next in my docker-compose.yml


services:

  web:
    build: .
    env_file: .env
    command: bash -c "python manage.py collectstatic --no-input && python manage.py makemigrations && python manage.py migrate && python manage.py runserver 0.0.0.0:8000"
    ports:
      - "8000:8000"
    depends_on:
      - redis
      - postgres
    restart: always
    volumes:
      - static:/static
    expose:
      - 8000
    environment:
      - .env
    links:
      - postgres
      - redis

  redis:
    image: "redis:alpine"


  postgres:
    image: "postgres:10"
    env_file:
      - .env
    volumes:
      - POSTGRES_DATA:/var/lib/postgresql/data
    ports:
      - "5433:5432"
    expose:
      - 5433

volumes:
    POSTGRES_DATA:
    static:

From my .env file

POSTGRES_NAME=dbname
POSTGRES_USER=dbuser
POSTGRES_PASSWORD=dbpassword
POSTGRES_HOST=postgres
POSTGRES_PORT=5432
POSTGRES_DATA=/var/lib/postgresql/10/main

But inside my web container I have next logs

  File "/usr/local/lib/python3.7/site-packages/psycopg2/__init__.py", line 130, in connect
    conn = _connect(dsn, connection_factory=connection_factory, **kwasync)
django.db.utils.OperationalError: FATAL:  database "dbname" does not exist

It means that databse mount failed. But I really can not find reason why it happens.

4

1 回答 1

0

我不确定,但你可以试试这个命令:docker-compose down -v删除卷和容器

于 2019-11-21T13:55:45.570 回答