docker - 通过网络链接的外部容器的别名

标签 docker docker-compose docker-networking

假设我们有两个 Web 服务:alpha 和 beta

1) alphadocker-compose.yml:

version: '2'

services:
    web:
        build: .
        env_file: local.env
        networks:
          - default
          - beta

    networks:
        beta:
            external:
                name: beta_default

2) 用于测试版docker-compose.yml:

version: '2'

services:
    web:
        build: .
        env_file: .env
        expose:
          - "5000"

这样我就可以与 alpha_web_1 容器交互(例如 ping)beta_web_1 容器。我想要的是为 beta_web_1 容器创建一个别名,以便我可以在有效的 URL 后命名它,例如:beta.local

我希望这发生在 alphadocker-compose.yml 内部,或者以任何方式将其保持在 alpha 的 View 范围内,这样我就不会需要更改 beta_web_1 的实际系统范围名称

这可能吗?

最佳答案

我错过了网络下有一个别名选项。这样,如果我们将 docker-compose.yml 文件更改为:

1) alpha/docker-compose.yml:

version: '2'

services:
    web:
        build: .
        env_file: local.env
        networks:
          default:
             aliases:
                - alpha.local
          beta:

networks:
    beta:
        external:
            name: beta_default

2) beta/docker-compose.yml

version: '2'

services:
    web:
        build: .
        env_file: .env
        expose:
          - "5000"
        networks:
          default:
             aliases:
                - beta.local
          alpha:

networks:
    alpha:
       external:
            name: alpha_default

现在我们可以从 alpha ping beta.local 容器,从 beta ping alpha.local 容器。

关于docker - 通过网络链接的外部容器的别名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45014442/

相关文章:

Docker 不解析主机名

nginx - Ghost 和 nginx 代理出现 docker-compose 错误

docker - systemd-coredump docker 编辑的卷

java - Dockerfile 和 Docker Compose 与 Java Spring Boot、Gradle 和 PostgreSQL

postgresql - 使用多个postgres数据库为开发和生产创建docker容器

Docker Compose 相对路径与 Docker 卷

java - docker-compose java应用程序连接到mongodb

asp.net - 在本地解析Docker主机名时HttpClient花费太多时间

amazon-web-services - Docker 容器无法连接到 Internet

jenkins - 如何配置 docker 以限制启动容器的端口范围