Я хочу создать базу данных MySql в контейнере Docker и выполнить в ней несколько операторов DDL и DML во время запуска контейнера

0

Это мой файл 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, и их выполнения.

Теги:
docker

1 ответ

0
Лучший ответ

В 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 - расположение ваших скриптов

  • 0
    Спасибо, @Дилан Тарака. Понятие «файлы с расширениями .sh, .sql и .sql.gz, которые находятся в /docker-entrypoint-initdb.d, будет выполняться при запуске контейнера», это было полезно. Но когда я использовал его, как указано выше, используя тома, я получил следующую ошибку: «ОШИБКА: для docker-mysql Не удается создать контейнер для службы docker-mysql: b'open \\\\. \\ pipe \\ docker_d4w_systray: система не может найти указанный файл.
  • 0
    Поэтому я использовал следующий подход для решения этой проблемы: я создал Dockerfile со следующим содержимым, куда я скопировал файл sql во время создания mysql-docker-образа: FROM mysql:5.7 COPY create_table.sql /docker-entrypoint-initdb.d/ Это работало нормально и создало необходимые таблицы.
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню