Docker链接容器作为构build参数

我有一个Dockercomposer php文件类似于:

版本:'2'
服务:
     D b:
         image:mariadb:10.1
        卷:
             - “./.data/db:/var/lib/mysql”
        重新启动:总是
        环境:
             MYSQL_ROOT_PASSWORD:test
             MYSQL_DATABASE:testing
             MYSQL_USER:testing
             MYSQL_PASSWORD:testing
    testing:
        依赖于取决于:
             - D b
        链接:
             -  db:db
        build立:
            上下文:。
             ARGS:
                 MYSQL_HOST:db
                 MYSQL_DATABASE:testing
                 MYSQL_USER:testing
                 MYSQL_PASSWORD:testing
        端口:
             - “8000:80”
        重新启动:总是

内部testing容器Dockerfile

 FROM ...

 ...
 ARG MYSQL_HOST 127.0.0.1

 RUN set -x;  echo $ MYSQL_HOST

运行脚本...  - 参数$ MYSQL_HOST

但是, MYSQL_HOSTvariables(我希望是另一个容器的内部IP)不会被转换为其他容器名称。

怎么可能呢? 用docker-compose可以以另一种方式实现吗?

我不认为你想在这里build立一个参数。 可能会将MYSQL_HOST设置为环境variables。 在docker-compose里面,文字stringdb实际上可以parsing到你的db容器中。

通常,撰写文件如下所示:

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

然后在你的testing代码中执行如下操作:

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

这样,MySql主机就不需要内置到您的映像中,无需重新构build您的映像。