【问题标题】:What is the best way to volume existing database to the container?将现有数据库卷到容器的最佳方法是什么?
【发布时间】:2023-03-08 09:20:02
【问题描述】:

需要通过 docker 容器运行项目。我需要将现有数据库挂载到 postgres 容器。在我的 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:

来自我的 .env 文件

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

但在我的网络容器中,我有下一个日志

  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

表示数据库挂载失败。但我真的找不到它发生的原因。

【问题讨论】:

    标签: django postgresql docker docker-compose containers


    【解决方案1】:

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

    【讨论】:

    • 我不需要删除卷。我需要将我现有的本地数据库挂载到容器中
    猜你喜欢
    • 2015-02-18
    • 1970-01-01
    • 2011-03-09
    • 1970-01-01
    • 1970-01-01
    • 2014-12-04
    • 2010-09-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多