Рубрики
Без рубрики

Настройка Mariadb через Докер С Пружинной Загрузкой

Как запустить MariaDB внутри Docker и подключиться к нему с помощью Spring Boot Docker… С тегами mariadb, java, spring, docker.

Как запустить 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”