Minio / Keycloak 集成:连接被拒绝

Minio / Keycloak integration: connection refused

我正在尝试将 MinIO 与 KeyCloak 连接起来,并且我按照本文档中提供的说明进行操作: https://github.com/minio/minio/blob/master/docs/sts/keycloak.md

到目前为止我所做的是为 MinIO 服务器部署一个 Docker 容器,另一个用于 MinioClient,第三个用于 KeyCloak 服务器。


正如您在以下代码片段中所见,Minio 客户端容器的配置已正确完成,因为我可以列出 Minio 服务器中可用的存储桶:

mc ls myminio
[2020-05-14 11:54:59 UTC]      0B bucket1/
[2020-05-06 12:23:01 UTC]      0B bucket2/

当我尝试按照文档的步骤 3(配置 MinIO) 中所述配置 MinIO 时出现问题。更详细地说,我运行的命令是这个:

mc admin config set myminio identity_openid config_url="http://localhost:8080/auth/realms/demo/.well-known/openid-configuration" client_id="account" 

我得到的错误是:

mc: <ERROR> Cannot set 'identity_openid config_url=http://localhost:8080/auth/realms/demo/.well-known/openid-configuration client_id=account' to server. Get http://localhost:8080/auth/realms/demo/.well-known/openid-configuration: dial tcp 127.0.0.1:8080: connect: connection refused.

当我从 MinIO 客户端容器卷曲此地址 http://localhost:8080/auth/realms/demo/.well-known/openid-configuration 时,我检索了 JSON 文件。

事实证明,我所要做的就是将 config_url 中的 localhostlocalhost 更改为 KeyCloak 容器的 IP (172.17.0.3)。

这只是目前有效的临时解决方案,但我将继续寻找比硬编码 IP 更具体的方法。

当我找到解决方案时,将更新此答案。

更新

我必须创建一个如下所示的 docker-compose.yml 文件,以便在无需手动放置 KeyCloak 容器的 IP 的情况下解决这些问题。

version: '2'
services:

  miniod:
    image: minio/minio
    restart: always
    container_name: miniod 
    ports:
    - 9000:9000
    volumes:
    - "C:/data:/data"
    environment:
    - "MINIO_ACCESS_KEY=access_key" 
    - "MINIO_SECRET_KEY=secret_key"
    command: ["server", "/data"]
    networks:
    - minionw

  mcd:
    image: minio/mc 
    container_name: mcd
    networks:
    - minionw

  kcd: 
    image: quay.io/keycloak/keycloak:10.0.1
    container_name: kcd
    restart: always
    ports: 
    - 8080:8080
    environment: 
    - "KEYCLOAK_USER=admin"
    - "KEYCLOAK_PASSWORD=pass"
    networks: 
    - minionw

networks:
  minionw: 
    driver: "bridge"


Connection refused 当无法访问我们指定的主机名或 IP 上的端口时发生。 请尝试使用 --expose 标志以及您希望在使用 docker CLI 时公开的端口号来公开端口。然后被暴露,你可以在localhost

上访问它