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
中的 localhost
从 localhost
更改为 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
上访问它
我正在尝试将 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
中的 localhost
从 localhost
更改为 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