当前位置: 首页 > 知识库问答 >
问题:

Docker链接容器作为生成参数

李利
2023-03-14

我有一个Docker composer文件,类似于:

version: '2'
services:
    db:
        image: mariadb:10.1
        volumes:
            - "./.data/db:/var/lib/mysql"
        restart: always
        environment:
            MYSQL_ROOT_PASSWORD: test
            MYSQL_DATABASE: test
            MYSQL_USER: test
            MYSQL_PASSWORD: test
    test:
        depends_on:
            - db
        links:
            - db:db
        build:
            context: .
            args:
                MYSQL_HOST: db
                MYSQL_DATABASE: test
                MYSQL_USER: test
                MYSQL_PASSWORD: test
        ports:
            - "8000:80"
        restart: always

内部测试容器Dockerfile

FROM ...

...
ARG MYSQL_HOST 127.0.0.1

RUN set -x; echo $MYSQL_HOST

RUN script ... --param $MYSQL_HOST

但是,mysql_host变量(我希望它是另一个容器的内部IP)不会被转换为另一个容器名称。

怎么能做到呢?用Docker-Compose可以用另一种方式实现吗?

共有1个答案

云隐水
2023-03-14

我不认为你想在这里进行构建论证。可能会将MYSQL_HOST设置为环境变量。在docker-compose中,文字字符串db实际上可以解析到db容器中。

通常,compose文件如下所示:

test:
   links:
     db:db
   environment:
     - MYSQL_HOST=db

然后在测试代码中执行以下操作:

...
String dbHost = System.getEnv("MYSQL_HOST");
...

这样,MySql主机就不需要被构建到您的映像中,这样就不需要一直重新构建您的映像。

 类似资料:
  • 问题内容: 我已经在Docker上进行了几天的实验,并逐渐喜欢上它。但是,有些事情仍然使我难以理解。到目前为止,这是我所拥有的 创建低占用空间的Ubuntu 14.04映像 为Apache映像创建Dockerfile 为PHP5创建Dockerfile 为memcached创建Dockerfile并构建映像 用memcached启动Docker容器 用Apache启动Docker容器并将其链接到之

  • 问题内容: 到目前为止,我已经成功地使用Mesos,Marathon和Docker来管理服务器群以及我放置在其上的容器。但是,我现在想走得更远,开始做一些事情,例如自动将haproxy容器链接到启动的每个主要docker服务,或者提供其他基于链接的守护程序和容器化服务,这些服务仅对单个父容器可用。 通常,我会先使用一些名称启动帮助程序服务,然后在启动真实服务时将其链接到帮助程序,然后一切都会好起来

  • 我使用的示例是:https://clubhouse.io/developer-how-to/how-to-set-up-a-hadoop-cluster-in-docker/ 我首先用:docker-compose up-d开始HDFS 然后我用debezium网站上的图片启动了动物园管理员Kafka和mysql。https://debezium.io/documentation/referenc

  • 问题内容: 我想知道容器ID的生成方式,因此请提供执行docker run时提供容器ID的源代码? 问题答案: 这是docker守护程序创建容器的代码片段: 因此,创建ID和名称的逻辑是在generateIDAndName函数中: 这是字符串源,具体方法是使用false作为输入参数的generateID: 正如你所看到的,该值是随机与此产生的随机

  • 我在Docker容器中安装了Oracle数据库,但不知道如何成为root用户。如果我从主人那里听到这个 或者 我得到 如果我做了 从主机,然后 从容器中,它询问root密码,但我不知道。 Hy主机操作系统是Ubuntu 18.04,链接到docker文件 编辑1: 发现了一个Docker错误。

  • 这是Node.js应用程序。 为了部署应用程序,我分别使用了一个node.js容器和一个redis容器,并将node.js容器与redis容器链接起来。 redis容器可通过以下方法获得 但我有个错误说: 由于redis容器暴露于6379,而我的nodejs容器正在链接到redis容器。在我的Node.js应用程序中,使用端口6379连接到localhost redis服务器应该是可以的,但实际上