Сохранение данных Postgres в каталог на именованном томе Docker - PullRequest
0 голосов
/ 04 декабря 2018

Проблема

У меня есть приложение с postgres.Я хочу иметь возможность создавать резервные копии исходных данных базы данных, чтобы мне не приходилось повторно вводить их при каждом развертывании.Однако, несмотря на настройку именованного тома в моем файле compose.

В чем я не уверен, так это в том, как postgres сохранит свои данные в каталог, связанный с томом.Я также не уверен, как именно связать каталог с именованным томом.Я хочу, чтобы хост-сервер докера мог видеть данные о ходе выполнения в связанном каталоге именованного тома.

Может кто-нибудь предоставить объяснение / некоторые примеры того, как с этим справиться?Прямо сейчас, даже несмотря на то, что том связан со службой docker в файле compose, он не записывает никаких данных в каталог database_volume /.Это то, к чему я хотел бы обратиться.

Код

Вот мой Dockerfile:

FROM python:3.6

ARG requirements=requirements/production.txt
ENV DJANGO_SETTINGS_MODULE=sasite.settings.production_test

WORKDIR /app

COPY manage.py /app/
COPY requirements/ /app/requirements/ 

RUN pip install -r $requirements

COPY config config
COPY sasite sasite
COPY templates templates
COPY logs logs

ADD /scripts/docker-entrypoint.sh /docker-entrypoint.sh
RUN chmod a+x /docker-entrypoint.sh

EXPOSE 8001

ENTRYPOINT ["/docker-entrypoint.sh"]

CMD ["/usr/local/bin/gunicorn", "--config", "config/gunicorn.conf", "--log-config", "config/logging.conf", "-e", "DJANGO_SETTINGS_MODULE=sasite.settings.production_test", "-w", "4", "-b", "0.0.0.0:8001", "sasite.wsgi:application"]

И мой docker-compose.yml:

version: "3.2"
services:
  app:
    restart: always
    build:
      context: .
      dockerfile: Dockerfile.prodtest
      args:
        requirements: requirements/production.txt
    container_name: dj01
    environment:
      - DJANGO_SETTINGS_MODULE=sasite.settings.production_test
      - PYTHONDONTWRITEBYTECODE=1
    volumes:
      - ./:/app
      - /static:/static
      - /media:/media
    networks:
      - main
    depends_on:
      - db
  db:
    restart: always
    image: postgres:10.1-alpine
    container_name: ps01
    environment:
      POSTGRES_DB: sasite_db
      POSTGRES_USER: pguser
      POSTGRES_PASSWORD: pguser123
    ports:
      - "5432:5432"
    volumes:
      - database_volume:/var/lib/postgresql/data
    networks:
      - main
  nginx:
    restart: always
    image: nginx
    container_name: ng01
    volumes:
      - ./config/nginx-prodtest.conf:/etc/nginx/conf.d/default.conf:ro
      - ./static:/usr/share/nginx/sasite/static
      - ./media:/usr/share/nginx/sasite/media
    ports:
      - "80:80"
      - "443:443"
    networks:
      - main
    depends_on:
      - app

networks:
  main:

volumes:
  database_volume:
    driver_opts:
      type: none
      device: ./database_volume
      o: bind
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...