【问题标题】:Creating a mysql docker container setting env variables创建一个mysql docker容器设置环境变量
【发布时间】:2019-05-30 12:58:39
【问题描述】:

我正在使用 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 容器文档,设置这些环境变量就是这样做的方法:

https://hub.docker.com/_/mysql

但是,我仍然无法连接到容器,我连接到 bash 并且我看到那些 env 变量没有设置。

有人知道怎么做吗?

我可以创建一个 dockerfile 并创建我自己的图像,但我不想这样做,我想用 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

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


【解决方案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();

附:另请注意文档中有关此参数的内容:

要在容器内设置的环境变量列表 形成 ["VAR=value", ...]。不带 = 的变量从 环境,而不是有一个空值。

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-08-01
    • 1970-01-01
    • 2017-05-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-10-22
    • 2019-10-31
    相关资源
    最近更新 更多