Как в docker-compose прописать импорт БД?

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

Для примера рассмотрим PostgreSQL базу данных. Для её импорта можно использовать официальный образ PostgreSQL и скрипт для загрузки данных. К примеру, можно создать следующий файл docker-compose.yml:

version: "3.9"
services:
  db:
    image: postgres:latest
    environment:
      - POSTGRES_USER=myuser
      - POSTGRES_PASSWORD=mypassword
      - POSTGRES_DB=mydb
    ports:
      - 5432:5432
    volumes:
      - ./data:/var/lib/postgresql/data
      - ./init.sql:/docker-entrypoint-initdb.d/init.sql

В этом примере мы объявляем сервис "db" с использованием Docker-образа postgres:latest. Мы также определяем переменные окружения для настройки пользователя, пароля и имени базы данных. Мы пробрасываем порт 5432 из контейнера в хостовую машину.

Важно отметить, что мы используем два тома (volumes): один для хранения данных базы данных, другой для загрузки скрипта инициализации.

В файле ./init.sql должен находиться скрипт для инициализации базы данных. В этом скрипте можно включить команды для создания таблиц, вставки данных и другие необходимые действия.

Для запуска контейнеров на основе файла docker-compose.yml, достаточно выполнить команду docker-compose up -d. Это создаст и запустит контейнер с базой данных PostgreSQL, который автоматически выполнит скрипт init.sql для инициализации данных.

Если вам необходимо использовать другую базу данных или другой способ импорта данных, вам нужно будет соответствующим образом настроить свои контейнеры и скрипты инициализации. Для этого можно обратиться к официальной документации Docker Hub или к документации конкретного образа базы данных.