Куда положить dump.sql для автоподнятия БД с нужного дампа Docker?

Читаю статью по поднятию postgres в Docker.

До момента "А куда сохраняются мои данные?" и подключению volumes. бэкап файл лежит рядом с docker-compose.yml и при поднятия приложения, бэкап успешно накатывается. Далее нужно подключить волюмы что-бы новые данные после растарта приложения не пропадали.

код который у меня работает:
version: "2.15.1"

services:
  postgres:
    image: postgres:13.3
    environment:
      POSTGRES_DB: "username"
      POSTGRES_USER: "username"
      POSTGRES_PASSWORD: "username"
    volumes:
      - .:/docker-entrypoint-initdb.d # не знаю для чего указывать эту дерикторию, если дамп и так накатывается лежа рядом с docker-compose -_-
    ports:
      - "5437:5432"


Далее добавляю пару строк (пометил комментариями):
version: "2.15.1"

services:
  postgres:
    image: postgres:13.3
    environment:
      POSTGRES_DB: "username"
      POSTGRES_USER: "username"
      POSTGRES_PASSWORD: "username"
    volumes:
      - ../2. Init Database:/docker-entrypoint-initdb.d # edited
      - username-data:/var/lib/postgresql/data # new
    ports:
      - "5437:5432"

volumes: # new
  username-data: # new


данные теперь сохраняются, но бэкап не накатывается, не понимаю что за путь и где эту папку создавать "../2. Init Database:/docker-entrypoint-initdb.d".

Здесь наблюдается явный пробел в знаниях(которых и так мало) по Docker. Посоветуйте в какую сторону капать или что еще доп почитать, для понимания решения задачки.

Всем огромное спасибо!
  • Вопрос задан
  • 1163 просмотра
Решения вопроса 1
@Senture Автор вопроса
Разобрался.

Вот мой код:
version: "2.15.1"

services:
  postgres:
    image: postgres:13.3
    environment:
      POSTGRES_DB: "username"
      POSTGRES_USER: "username"
      POSTGRES_PASSWORD: "username"
      PGDATA: "/var/lib/postgresql/data/pgdata"
    volumes:
      - ./Initer:/docker-entrypoint-initdb.d
      - usr-data:/var/lib/postgresql/data
    ports:
      - "5437:5432"

volumes:
  usr-data:


В этом случае, нужно создать директорию Initer в корне (где лежит docker-compose.yml) и в нее положить необходимый dump.sql и все работает.

Важно!: Если папку не создать, она появится автоматически после docker-compose up. Но будет естественно пустой, и даже если сделать down, в папку положить дамп, и поднять приложение (docker-compose up) бэкап уже не накатится, т.к. БД уже была проинициализирована ранее и никакие изменения к ней применяться не будут.

Прошу прощения за такие глупые вопросы :D
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы