我正在使用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客户端来实现。
答案 0 :(得分:1)
此客户端使用docker API,因此如果客户端缺少文档,则可以随时检查原始API。
检查Docker Engine API中的CREATE A CONTAINER
部分。
您会看到有一个env
字段的JSON请求示例:
"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。另外,请注意有关此参数的文档说明:
要在容器中设置的环境变量列表 形式[“ VAR = value”,...]。没有=的变量将从 环境,而不是具有空值。
可以帮助您以后避免错误。