Создание контейнера докеров mysql, устанавливающего переменные env

Я использую клиент Spotify-Docker для создания и запуска контейнера 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 не установлены.

Кто-нибудь знает как это делать?

Я мог бы создать файл докеры и создать свой собственный образ, но я не хочу этого делать, я хочу сделать это с помощью клиента Spotify.

По сути, мне нужно сделать то же самое, что и в терминале: docker run --name some-mysql -e MYSQL_ROOT_PASSWORD=my-secret-pw -e MYSQL_DATABASE=test -e MYSQL_USER=test -e MYSQL_PASSWORD=test -d mysql:5.6

user1990218 30.05.2019 15:31
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
1
1
1 421
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

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

Вы можете видеть, что есть пример запроса 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();

P.S. Также обратите внимание, что в документации говорится об этом параметре:

A list of environment variables to set inside the container in the form ["VAR=value", ...]. A variable without = is removed from the environment, rather than to have an empty value.

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

Другие вопросы по теме

Стек вызовов из Docker показывает мои локальные пути. Это нормально?
Добавление плагина в образ Kibana в docker-compose.yml
Ошибка при использовании sbt-native-packager для получения поддержки докеров для моего проекта sbt
Почему ПОЛЬЗОВАТЕЛЬ, объявленный в моем Dockerfile, не отражен в сценарии ENTRYPOINT?
Как обращаться к серверному хосту с помощью axios, когда интерфейс и сервер находятся в виртуальной сети докеров
Container_linux.go:247: неверное значение поля заголовка — разрешение> отклонено — проблема с собственным образом Quarkus в OpenShift
Соединение с локальным хостом: 5432 отклонено. Убедитесь, что имя хоста и порт указаны правильно, а постмастер принимает соединения TCP/IP
Исключение «Файл не найден» при запуске DockerFile
Flask/SQLAlchemy/Docker Есть ли лучший способ справиться с тем, что я считаю круговой зависимостью? Полный проект github включен
Я продолжал получать ссылку на синтаксический анализ ошибок в сборке Docker