首页 > 解决方案 > 如何与两个 docker compose 文件联网

问题描述

我有一个后端 API 和一个身份管理器服务,它们每个都有一个撰写文件。在每个 API 请求上,代码都应该与身份服务通信(验证 JWT 令牌),但它位于不同的网络上。我应该如何配置网络以相互访问?

version: "3.9"
services:
    api:
        build: .
        ports:
            - 5000:80
            - 5001:443
        depends_on:
            - db
        environment:
            - ASPNETCORE_ENVIRONMENT=Production
            - ConnectionString=Server=db,1433;Database=test;User Id=sa;Password=${SQL_PASSWORD}
            - JWTSettings__Issuer=${AUTH_ISSUER}
            - JWTSettings__Authority=${AUTH_AUTHORITY}
            - JWTSettings__Audience=${AUTH_AUDIENCE}
    
    db:
        image: mcr.microsoft.com/mssql/server
        user: root
        ports:
            - 1433:1433
        environment:
            - SA_PASSWORD=${SQL_PASSWORD}
            - ACCEPT_EULA="Y"
version: "3.9"
services:
    auth:
        image: quay.io/keycloak/keycloak
        environment:
            KEYCLOAK_USER: admin
            KEYCLOAK_PASSWORD: admin
        ports:
            - 4000:8080

标签: dockerdocker-compose

解决方案


默认网络是 $prefix_default,其中 $prefix 默认是包含 docker-compose.yml 文件的文件夹的名称。这可以通过使用-p带有 docker-compose 的参数来设置,请参阅docs

您可以使用另一个 docker-compose 堆栈中的网络,方法是在第二个 docker-compose.yml 中定义它,如下所示:

networks:
    project1_default: 
      external: true

或者,您可以手动创建一个 docker 网络 [ 2 ],并在您的两个 docker-compose.yml 文件中引用它。


推荐阅读