Как я могу сохранить данные базы данных docker локально на моем сервере?

Я запускаю приложение внутри контейнера docker. Это приложение использует образ docker Postgres для сохранения данных в базе данных. Мне нужно сохранить локальную копию данных этой базы данных, чтобы избежать потери данных, если контейнер будет удален или очищен каким-то образом ... поэтому я использую volumes внутри моего файла `docker-compose.YAML, но все равно локальная папка DB всегда пуста ... поэтому всякий раз, когда я перемещаю контейнер или очищаю его, данные теряются

docker-compose.yaml

version: "2"

services:

  db:
    image: postgres
    volumes:
      - ./data/db:/var/lib/postgresql/data
    ports:
      - '5433:5432'
    restart: always       
    command: -p 5433
    environment:
      - POSTGRES_DB=mydata
      - POSTGRES_USER=mydata
      - POSTGRES_PASSWORD=mydata@
      - PGDATA=/tmp


  django-apache2:
    build: .
    container_name: rolla_django
    restart: always 
    environment:
      - POSTGRES_DB=mydata
      - POSTGRES_USER=mydata
      - POSTGRES_PASSWORD=mydata@
      - PGDATA=/tmp
    ports:
      - '4002:80'
      - '4003:443'
    volumes:
      - ./www/:/var/www/html
      - ./www/demo_app/static_files:/var/www/html/demo_app/static_files
      - ./www/demo_app/media:/var/www/html/demo_app/media

#    command: sh -c 'python manage.py migrate && python manage.py loaddata db_backkup.json && apache2ctl -D FOREGROUND'
    command: sh -c 'wait-for-it db:5433 -- python manage.py migrate && apache2ctl -D FOREGROUND'

    depends_on:
      - db

Как вы видите, я использовал ./data/db:/var/lib/postgresql/data, но локально каталог ./data/db всегда пуст!!!

НОТ

когда я использую docker volume list, он не показывает никаких объемов вообще

В соответствии с вашей установкой, данные находятся в /tmp: PGDATA=/tmp. Удалите это, и сопоставление томов будет работать.

Также ваша команда -p 5433 заставляет postgres работать на порту 5433, но вы все еще используете порт 5432. Так что если вы не можете добраться до базы данных, это может быть из-за этого.

Вернуться на верх