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