Docker compose docker compose网络中的密钥斗篷

Docker compose docker compose网络中的密钥斗篷,docker-compose,keycloak,openid-connect,Docker Compose,Keycloak,Openid Connect,我想设置一个Docker网络,其中包含KeyClope、postgres和webapp实例 有没有一种方法既可以在容器之间进行网络通信,又可以理解oidc客户端重定向?我遇到了一个问题,如果我使用docker网络的容器名称设置OIDC,容器之间可以正常通信,但是我遇到了客户端问题,无法连接到主机上docker网络之外的相同URL 有人能给我指出正确的docker文档,让我看看DNS或主机到容器通信的可能解决方案吗 ----编辑--- 澄清。容器可以在容器名称下相互通信,但客户端(即Chrome)

我想设置一个Docker网络,其中包含KeyClope、postgres和webapp实例

有没有一种方法既可以在容器之间进行网络通信,又可以理解oidc客户端重定向?我遇到了一个问题,如果我使用docker网络的容器名称设置OIDC,容器之间可以正常通信,但是我遇到了客户端问题,无法连接到主机上docker网络之外的相同URL

有人能给我指出正确的docker文档,让我看看DNS或主机到容器通信的可能解决方案吗

----编辑---

澄清。容器可以在容器名称下相互通信,但客户端(即Chrome)必须使用
localhost
与所有内容通信。在ui web应用程序的OIDC连接设置中,我必须使用容器名或localhost。如何让我的客户理解容器名称,以便提出正确的请求

version: '2'

services:

  ui:
    container_name: 'ui'
    image: 'bdparrish/ui:0.1'
    build:
      context: .
      dockerfile: ./ui/Dockerfile
    ports:
      - "8085:80"
    depends_on:
      - "postgres"
      - "keycloak"
    networks:
      - auth-network
    environment:
      - ASPNETCORE_ENVIRONMENT=Docker

  postgres:
    container_name: postgres
    image: 'postgres'
    environment:
      POSTGRES_PASSWORD: password
    ports:
      - "5432:5432"
    networks:
      - auth-network

  keycloak:
    container_name: keycloak
    image: jboss/keycloak
    ports: 
      - "8080:8080"
    depends_on:
      - postgres
    environment:
      DB_VENDOR: "POSTGRES"
      DB_ADDR: postgres
      DB_PORT: 5432
      DB_USER: keycloak
      DB_PASSWORD: password
      KEYCLOAK_USER: admin
      KEYCLOAK_PASSWORD: password
    restart: always
    networks:
      - auth-network

networks:
  auth-network:
    driver: bridge

您只需在主机文件中添加一个条目:

  • Windows:
    C:\Windows\System32\drivers\etc\hosts
  • Linux:
    /etc/hosts
将其附加到文件末尾:
127.0.0.1钥匙斗篷


然后从用户界面使用
keydepot:8080
与keydepot服务器通话,而不是
localhost:8080
。您仍然可以使用
localhost:8580
访问浏览器中的UI。

您不必修改etc/hosts文件。 有一个名为
keydape\u FRONTEND\u URL的keydape环境变量
专门用于此目的

编辑docker compose文件,如下所示:

版本:“2”
服务:
用户界面:
容器名称:“ui”
图片:“bdparrish/ui:0.1”
建造:
上下文:。
dockerfile:./ui/dockerfile
端口:
- "8085:80"
取决于:
-“博士后”
-“钥匙斗篷”
网络:
-认证网络
环境:
-ASPNETCORE_环境=Docker
博士后:
容器名称:postgres
图片:“博士后”
环境:
POSTGRES_密码:PASSWORD
端口:
- "5432:5432"
网络:
-认证网络
钥匙斗篷:
容器名称:keydove
图片:jboss/keydape
端口:
- "8080:8080"
取决于:
-博士后
环境:
DB_供应商:“POSTGRES”
数据库地址:postgres
DB_端口:5432
DB_用户:密钥斗篷
DB_密码:密码
密钥斗篷用户:管理员
密码:密码
密钥斗篷\u前端\u URL=http://localhost:8080/auth
重新启动:始终
网络:
-认证网络
网络:
身份验证网络:
司机:驾驶台

然后,登录应该重定向到该url。

您可以用容器名称发布您的设置吗?进入docker网络不应该是容器的问题。如果您的容器是可公开访问的,OIDC应该可以正常工作。我相信有一种方法可以像您所说的那样手动配置,但我正在寻找一种可以纠正问题的KeyClope配置,甚至是令牌请求工作流配置,正如这里所指出的:似乎没有更好的方法可以真正工作。谢谢