java - 创建 mysql docker 容器设置环境变量

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

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

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

但是,我仍然无法连接到容器,我连接到 bash 并且发现那些环境变量未设置。

有人知道怎么做吗?

我可以创建一个 dockerfile 并创建我自己的图像,但我不想这样做,我想使用 Spotify 客户端来完成。

最佳答案

此客户端使用 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();

附注另请注意文档中关于此参数的说明:

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.

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

关于java - 创建 mysql docker 容器设置环境变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56378813/

相关文章:

java - 遍历List集合性能问题

Java 不会使用 FileWriter 写入现有文件

Docker 没有显示为 PyCharm 上 Python 解释器的一个选项

linux - 何时以及何时不在 Docker Remote API 中使用 tty

docker - Com.github.dockerjava.api.exception.DockerClientException:证书路径(DOCKER_CERT_PATH) ‘/root/.docker/certs’不存在一般讨论

java - 如何在 Java 5 中将今天作为字符串获取?

java - 创建多个线程将文件写入磁盘,Java

docker - 带有Apache服务器的Docker容器被杀死

linux - 了解 Docker Macvlan 网络

docker - 通过守护进程启动在 Ubuntu 14.04 上启用 Docker 远程 API