Как запустить MariaDB внутри Docker и подключиться к нему с помощью Spring Boot
Докер с MariaDB
Мы будем использовать yobasystems/alpine-mariadb , облегченный образ контейнера, использующий MariaDB с открытым исходным кодом в качестве альтернативы MySQL.
Вот команда докера:
docker run --name mariadb -p 33067:3306 -v /var/lib/mysql:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=root_pass -d yobasystems/alpine-mariadb
Команда создаст контейнер с именем mariadb
с паролем root ( root_pass
). Вы можете подключиться к базе данных через localhost
на порту 33067.
Пружинный ботинок
Инициализируйте загрузку Spring с помощью Инициализатора Spring .
Зависимости: Весенние данные JPA, MariaDB Водитель .
Я также добавил Репозитории Rest и Ломбок , потому что моей целью было создать CRUD REST API с Spring.
Настройка пользователя и базы данных
Создайте два сценария.
Первый предназначен для создания пользователя (назовите его 01-user-setup.sql
):
CREATE USER 'myuser'@'%' IDENTIFIED BY 'mypass'; GRANT ALL PRIVILEGES ON * . * TO 'myuser'@'%';
Скрипт создает нового пользователя с именем myuser
с паролем обход
на всех хостах . Конечно, вы можете изменить значения в соответствии с вашими потребностями.
По умолчанию MySQL и MariaDB ограничивают подключения, отличные от подключения к локальной машине. Контейнер Docker работает в отдельной сети. Для подключения с локального компьютера вам потребуется использовать подстановочный знак %
в качестве хоста.
Второй скрипт создает базу данных ( 02-database-setup.sql
):
-- ----------------------------------------------------- -- Schema ecommerce -- ----------------------------------------------------- DROP SCHEMA IF EXISTS `ecommerce`; CREATE SCHEMA `ecommerce`; USE `ecommerce` ;
Если вы хотите, вы также можете создать свои таблицы здесь. Я опустил здесь дополнительную настройку.
Теперь давайте запустим эти сценарии через docker:
docker exec -i mariadb sh -c 'mysql --host=localhost --user=root --password=root_pass' < 01-user-setup.sql
И схема базы данных:
docker exec -i mariadb sh -c 'mysql --host=localhost --user=root --password=root_pass' < 02-database-setup.sql
Объяснение:
exec -i mariadb
: запустите команду в работающем контейнере с помощью стандартного ввода ( -i
) — мы назвали контейнер базы данных mariadb
sh -c
: запустите сценарий оболочки с операндом командной строки
'mysql'
: это команда, которую мы выполняем внутри контейнера
<01-user-setup.sql
: прочитайте файл из стандартного ввода (на вашем локальном компьютере)
Соедините Пружину
Найдите файл src/main/ресурсы/application.properties
в своем проекте Spring и замените его следующим содержимым.
spring.datasource.driver-class-name=org.mariadb.jdbc.Driver # connect via localhost on port 33067 spring.datasource.url=jdbc:mariadb://localhost:33067/ecommerce?useSSL=false&useUnicode=yes&characterEncoding=UTF-8&allowPublicKeyRetrieval=true&serverTimezone=UTC spring.datasource.username=myuser spring.datasource.password=mypass spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.MariaDB103Dialect # use update for development # see https://stackoverflow.com/questions/42135114/how-does-spring-jpa-hibernate-ddl-auto-property-exactly-work-in-spring spring.jpa.hibernate.ddl-auto=update spring.data.rest.base-path=/api
Моя версия MariaDB – это 10.5.9
, если ваша версия выше, вам может потребоваться настроить диалект гибернации на более высокую версию .
Теперь вы должны иметь возможность подключиться к базе данных.
Я запускаю приложение через Maven вот так:
mvn spring-boot:run
Связи
кредит на изображение: Пепел от современного Аффлатуса
Оригинал: “https://dev.to/sophiabrandt/setup-mariadb-via-docker-with-spring-boot-1168”