gpt4 book ai didi

Docker 链接容器作为构建参数

转载 作者:行者123 更新时间:2023-12-02 09:18:03 25 4
gpt4 key购买 nike

我有一个类似于以下内容的 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.1RUN set -x; echo $MYSQL_HOSTRUN script ... --param $MYSQL_HOST

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

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

最佳答案

我认为您不想在这里进行构建参数。可能会将 MYSQL_HOST 设置为环境变量。在 docker-compose 内部,文字字符串 db 实际上可以解析为您的数据库容器。

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

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

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

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

这样,MySql 主机就不需要内置到您的镜像中,从而无需始终重建您的镜像。

关于Docker 链接容器作为构建参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39310309/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com