Создание MySQL Docker контейнера, устанавливающего переменные env - PullRequest
1 голос
/ 30 мая 2019

Я использую 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 Ответ

1 голос
/ 30 мая 2019

Этот клиент использует Docker API, поэтому, если у клиента нет документации, вы всегда можете проверить исходный API.Проверьте раздел CREATE A CONTAINER в Docker Engine API .

. Вы видите, что есть пример запроса 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", ...].Переменная без = удаляется из среды вместо того, чтобы иметь пустое значение.

Может помочь избежать ошибок позже.

...