Создать Dockerfile с MySQL - PullRequest
       8

Создать Dockerfile с MySQL

0 голосов
/ 09 января 2019

Я хотел бы создать Dockerfile, чтобы создать контейнер, в котором уже установлен mysql и созданы мои базы данных.

У меня есть папка sql, которая содержит мои * .sql файлы, и папка script, которая содержит мой db_builder.sh скрипт, который выполняет всю необходимую мне работу (создание баз данных, импорт необходимых файлов sql и т. Д. ..).

Единственное, чего мне не хватает, это запустить сервер mysql до запуска сценария db_builder.sh. Также мне нужно знать, какой будет пароль по умолчанию для пользователя root.

FROM ubuntu:18.04

ADD sql src/sql
ADD scripts src/scripts

RUN apt-get update && apt-get install mysql-server -y

# somehow start mysql ???

RUN src/scripts/db_builder.sh

1 Ответ

0 голосов
/ 10 января 2019

Я решил свою проблему:

1) создание образа Dockerfile FROM MySQL вместо образа Ubuntu

2) разделение моего db_builder.sh на два сценария: - prepare_sql_files.sh -> который готовит необходимые файлы sql для импорта - db_import.sh -> который фактически импортирует

3) установите RUN на prepare_sql_files.sh в Dockerfile, просто поместив (ДОБАВИТЬ) db_import.sh в /docker-entrypoint-initdb.d из-за этой функции mysql docker image :

Когда контейнер запускается в первый раз, будет создана новая база данных с указанным именем и инициализирована с помощью предоставленных переменных конфигурации. Кроме того, он будет выполнять файлы с расширениями .sh, .sql и .sql.gz, которые находятся в /docker-entrypoint-initdb.d. Файлы будут выполнены в алфавитном порядке. Вы можете легко заполнить ваши службы mysql, смонтировав дамп SQL в этот каталог и предоставив пользовательские изображения с предоставленными данными. Файлы SQL будут импортированы по умолчанию в базу данных, указанную в переменной MYSQL_DATABASE.

Итак, мой dockerfile теперь выглядит так:

FROM mysql:latest

ADD sql /src/sql
ADD scripts /src/scripts

RUN /src/scripts/prepare_sql_files.sh

ADD /src/scripts /docker-entrypoint-initdb.d
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...