跨容器调用Minio服务失败:SSL版本错误排查求助
这个SSL版本错误的核心原因是应用容器用HTTPS协议连接Minio,但Minio容器实际只提供HTTP服务(或协议配置不匹配),按以下步骤逐一解决:
检查Python客户端初始化代码
查看你创建Minio客户端的代码,是否设置了secure=True?比如:from minio import Minio client = Minio( "minio_server:9000", access_key="your-access-key", secret_key="your-secret-key", secure=True # 此处是关键问题点 )如果Minio容器未配置SSL证书,默认仅提供HTTP服务,将
secure=True改为secure=False即可解决协议不匹配问题。验证Minio容器的服务协议
在应用容器内执行curl命令测试:# 测试HTTP连接 curl http://minio_server:9000 # 测试HTTPS连接 curl https://minio_server:9000若HTTP能返回Minio的响应(比如未带认证的XML错误页),HTTPS返回SSL错误,说明Minio确实是HTTP服务,客户端必须用HTTP连接。
检查docker-compose中的Minio配置
查看Minio服务的环境变量与挂载配置,是否设置了MINIO_CERT_FILE、MINIO_KEY_FILE这类启用SSL的参数?如果没有,Minio默认不会开启HTTPS。若确实需要HTTPS连接,需准备SSL证书(可自签),并在docker-compose中挂载证书、配置环境变量:services: minio_server: image: minio/minio command: server /data environment: MINIO_CERT_FILE: /certs/public.crt MINIO_KEY_FILE: /certs/private.key volumes: - ./certs:/certs - minio_data:/data同时客户端代码保持
secure=True,若使用自签证书,需添加cert_check=False(仅测试环境用,生产建议用可信证书)。确认网络配置细节
虽然已ping通Minio容器,但需确保Minio的9000端口在容器内部可访问(docker-compose默认的桥接网络下,服务名直接映射,无需额外端口暴露给外部),不过结合报错信息,核心问题还是协议不匹配。
内容的提问来源于stack exchange,提问作者rishab ajain445

