创建一个mysql docker容器设置环境变量

时间:2019-05-30 12:58:40

标签: java docker docker-api spotify-docker-client

我正在使用spotify-docker-client创建并启动一个mysql容器进行测试。它的工作原理完美,但是我很难找到如何设置某些值以连接到数据库,例如MYSQL_ROOT_PASSWORDMYSQL_DATABASEMYSQL_USERMYSQL_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 个答案:

答案 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”,...]。没有=的变量将从   环境,而不是具有空值。

可以帮助您以后避免错误。