Как сделать импорт бд в docker-compose контенер?
имеется docker-compose.yml
services:
web:
build: ./php
environment:
- APACHE_RUN_USER=#1000
volumes:
- ${APP_PATH_HOST}:${APP_PATH_CONTAINER}
ports:
- 8080:80
working_dir: ${APP_PATH_CONTAINER}
db:
image: mariadb
restart: always
environment:
MYSQL_ROOT_PASSWORD: test
volumes:
- ./db:/var/lib/mysql
- ./migr:/usr/data
adminer:
image: adminer
restart: always
ports:
- 6080:8080
В папке migr хранятся 3 sql дампа баз, как их импортировать в базу данных в контейнере db, при сборке проекта?
Ответы (1 шт):
В данном docker-compose.yml для базы данных используется образ mariadb.
На странице данного образа в разделе Initializing a fresh instance сказано что инициализирующие файлы можно поместить в директорию /docker-entrypoint-initdb.d (поддерживаются расширения фалов .sh, .sql, .sql.gz, .sql.xz и .sql.zst).
Измените строчку монтирования volume ./migr так, что бы монтирование происходило в /docker-entrypoint-initdb.d. Таким образом база данных будет инициализироваться содержимым директории ./migr каждый раз при создании нового контейнера. Т.е. подключить инициализацию, желательно, только один раз, т.к. далее данные уже будут находиться в базе (из-за того что есть монтирование /var/lib/mysql), после первой успешной инициализации следует отключить монтирование ./migr что бы избежать ошибок и потери данных.