Создание MySQL Docker контейнера, устанавливающего переменные env
Я использую spotify-docker-client для создания и запуска MySQL-контейнера для тестирования. Это прекрасно работает, но я с трудом пытаюсь найти, как установить определенные значения для подключения к базе данных, как MYSQL_ROOT_PASSWORD
, MYSQL_DATABASE
, MYSQL_USER
, а также MYSQL_PASSWORD
, Это мой код:
final ContainerConfig containerConfig = ContainerConfig.builder()
.hostConfig(hostConfig)
.image(image)
.env("MYSQL_ROOT_PASSWORD","testrootpwd","MYSQL_DATABASE", "test", "MYSQL_USER", "test", "MYSQL_PASSWORD", "test")
.build();
LOG.debug("Creating container for image: {}", image);
final ContainerCreation creation = this.docker.createContainer(containerConfig);
Я предполагаю что .env
вызов для установки переменных среды. И согласно документации контейнера mysql, установка этих переменных env является способом сделать это:
https://hub.docker.com/_/mysql
Но все равно я не могу подключиться к контейнеру, я подключился к bash и вижу, что эти переменные env не установлены.
кто нибудь знает как это сделать?
Я мог бы создать dockerfile и создать свой собственный образ, но я не хочу этого делать, я хочу сделать это с помощью клиента spotify.
1 ответ
Этот клиент использует Docker API, поэтому, если у клиента нет документации, вы всегда можете проверить исходный API. Проверить CREATE A CONTAINER
раздел в API Docker Engine.
Вы можете видеть, что есть пример запроса JSON с env
поле:
"Env": [
"FOO=bar",
"BAZ=quux"
],
Так что я думаю, что вы можете сделать это в своем Java-коде:
final ContainerConfig containerConfig = ContainerConfig.builder()
.hostConfig(hostConfig)
.image(image)
.env("MYSQL_ROOT_PASSWORD=testrootpwd", "MYSQL_DATABASE=test", ...)
.build();
PS Также, пожалуйста, обратите внимание, что в документации говорится об этом параметре:
Список переменных среды для установки внутри контейнера в форме ["VAR=value", ...]. Переменная без = удаляется из среды, а не иметь пустое значение.
Может помочь вам избежать ошибок позже.