Это мой файл docker-compose.yml
version: "3.5"
services:
docker-mysql:
image: mysql:5.7
container_name: docker-mysql
environment:
- MYSQL_ROOT_PASSWORD=password
- MYSQL_DATABASE=user_management
- MYSQL_PASSWORD=password
База данных по умолчанию создается "user_management", и теперь у меня есть файлы с операторами DDL и DML в ней, которые я хочу выполнить, например, оператор DDL (создать таблицу) и операторы DML (по умолчанию добавьте несколько пользователей). Не путем ввода bash и ручного выполнения инструкций, а любого автоматизированного докеревого способа загрузки файлов, содержащих заявления DDL и DML, и их выполнения.
В mysql dockerhub говорится, что файлы с расширениями.sh,.sql и.sql.gz, которые находятся в /docker-entrypoint-initdb.d, будут выполняться при запуске контейнера в базу данных, указанную переменной MYSQL_DATABASE.
version: "3.5"
services:
docker-mysql:
image: mysql:5.7
container_name: docker-mysql
environment:
- MYSQL_ROOT_PASSWORD=password
- MYSQL_DATABASE=user_management
- MYSQL_PASSWORD=password
volumes:
- /yourscript:/docker-entrypoint-initdb.d
так, как указано выше, вы можете монтировать тома и добавлять свои DDL и DML-скрипты в этом месте. Тогда mysql выполнит их при запуске. /yourscript
- расположение ваших скриптов
FROM mysql:5.7 COPY create_table.sql /docker-entrypoint-initdb.d/
Это работало нормально и создало необходимые таблицы.