Для инициализации базы данных в контейнере Docker с помощью SQL файла, можно использовать команду docker exec:
1. Переместите SQL файл именно в тот каталог в контейнере, где обычно загружаются начальные данные (например, /docker-entrypoint-initdb.d/ для контейнера с базой данных MySQL).
2. Запустите контейнер с указанием пути к вашему SQL файлу:
```
docker run --name=my-database -v /path/to/sql/file.sql:/docker-entrypoint-initdb.d/init.sql -d my-database-image
```
3. Подключитесь к контейнеру и выполните SQL команду вручную:
```
docker exec -i my-database mysql -uroot -ppassword mydatabase < /docker-entrypoint-initdb.d/init.sql
```
Другой способ - использование docker-compose:
1. Добавьте раздел volumes в ваш файл docker-compose.yml для каждой базы данных, указав путь к соответствующему SQL файлу:
```
volumes:
- /path/to/sql/file/db1.sql:/docker-entrypoint-initdb.d/init_db1.sql
- /path/to/sql/file/db2.sql:/docker-entrypoint-initdb.d/init_db2.sql
```
2. Создайте сервис для каждой базы данных, указав необходимые параметры, включая volumes:
```
services:
db1:
image: my-db1-image
volumes:
- /path/to/sql/file/db1.sql:/docker-entrypoint-initdb.d/init_db1.sql
db2:
image: my-db2-image
volumes:
- /path/to/sql/file/db2.sql:/docker-entrypoint-initdb.d/init_db2.sql
```
3. Запустите docker-compose:
```
docker-compose up
```
Теперь при запуске контейнеров, SQL файлы будут автоматически загружены и выполнены для каждой базы данных.