Загрузить дамп Postgres после docker-составить

у меня свалка.sql-файл, который я хотел бы загрузить с помощью docker-compose.

докер-сочинять.в формате YML:

services:
  postgres:
    environment:
      POSTGRES_DB: my_db_name
      POSTGRES_USER: my_name
      POSTGRES_PASSWORD: my_password
    build:
      context: .
      dockerfile: ./devops/db/Dockerfile.db

Мой Файла Docker.db на данный момент очень просто:

FROM postgres
MAINTAINER me <me@me.me>

COPY ./devops/db ./devops/db
WORKDIR ./devops/db

Я хотел бы запустить команду, как psql my_db_name < dump.sql в какой-то момент. Если я запускаю такой сценарий из Dockerfile.db, проблема в том, что скрипт запускается после сборки, но до docker-compose up, и база данных не работает.

есть идеи, как это сделать ?

2 ответов


чтение https://hub.docker.com/_/postgres/, раздел "расширить это изображение" объясняет, что любой .sql in /docker-entrypoint-initdb.d будет выполнен после сборки.

Мне просто нужно было изменить файл Dockerfile.дБ:

FROM postgres

ADD ./devops/db/dummy_dump.sql /docker-entrypoint-initdb.d

и это работает!


sudo docker exec postgres psql -U postgres my_db_name < dump.sql