Постановка задачи
Запустите контейнер MySQL с предварительно определенным файлом .sql (база данных, таблицы, вставка и т. Д.).
Решение
- Загрузите базовое изображение из Docker hub # https://hub.docker.com/_/mysql
- Создайте новую папку «scripts» и файл sql # https://github.com/krishnamanchikalapudi/developer.info/blob/develop/database/mysql/scripts/data.sql
MySQL
x
24
1
CREATE DATABASE TESTDB;
2
COMMIT;
3
CREATE USER 'testuser'@'localhost' IDENTIFIED BY 'my-secret-pw';
4
GRANT ALL ON TESTDB.* TO 'testuser'@'localhost';
5
6
COMMIT;
7
8
use TESTDB;
9
10
CREATE TABLE IF NOT EXISTS TESTTABLE
11
(
12
id INT NOT NULL AUTO_INCREMENT ,
13
modifiedOn TIMESTAMP,
14
createdOn TIMESTAMP,
15
testname VARCHAR (50),
16
PRIMARY KEY (id)
17
);
18
19
INSERT INTO TESTTABLE (testname, createdOn, modifiedOn) VALUES
20
("name-1", NOW(), NOW()),
21
("name-2", NOW(), NOW()),
22
("name-3", NOW(), NOW()),
23
("name-4", NOW(), NOW());
24
© 2020 GitHub, Inc.
- Подключите локальную папку sql 'scripts' к тому Docker ' -v '.
- Создать файл сценария оболочки для загрузки MySQL из Docker Hub
Оболочка
x
1
export containerName=mysql
2
export hostAddress=127.0.0.1
3
export hostPort=3306
4
export ROOT_USERNAME=root
5
export ROOT_PASSWORD=my-secret-pw
6
7
// download latest mysql container from docker hub
8
docker pull ${containerName}:latest
9
10
// start MySql container service
11
docker run --name ${containerName} -v ${CURRENT_PATH}/scripts:/docker-entrypoint-initdb.d -p ${hostPort}:${hostPort} -e MYSQL_ROOT_PASSWORD=${ROOT_PASSWORD} -e MYSQL_DATABASE=${containerName} -e TZ='America/Los_Angeles' -d ${containerName} --verbose --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci &
12
13
// wait until container running...
14
sleep 15
15
16
// tail logs
17
docker logs -f $containerId &
18
- Наконец, выполните сценарий оболочки
Проблемы, с которыми вы можете столкнуться на рабочем столе Docker
- bind-адрес docker, обновите Docker Perferences > Настройки > Ресурсы с IP -адресом, как показано ниже
Дополнительная информация:
- Код GitHub # https://github.com/krishnamanchikalapudi/developer.info/tree/develop/database/mysql
- Том докера # https://docs.docker.com/storage/volumes/
- MySQL image # https://hub.docker.com/_/mysql