You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Django项目Docker部署Minio遇'minio'主机名解析失败求助

解决Docker环境下Minio主机名解析失败及连接错误

错误分析

你遇到的urllib3.exceptions.MaxRetryError包含两个核心问题:

  1. 主机名解析失败:系统无法识别minio服务名
  2. 连接协议不匹配:代码尝试用HTTPS连接Minio的9000端口,但Minio默认9000端口为HTTP协议

具体解决方案

1. 确保Backend与Minio的网络连通性

Docker Compose默认会创建共享网络,服务名可直接作为主机名访问,但你的backend服务仅配置了links: - db,可补充Minio的链接确保解析:
修改docker-compose.yml中backend服务的配置:

backend:
  # ... 原有配置
  links:
    - db
    - minio  # 新增该行,显式关联Minio服务

也可进入backend容器测试连通性:

# 进入backend容器
docker exec -it <backend-container-name> sh
# 测试ping minio
ping minio

如果能ping通,说明网络解析正常,问题出在连接协议。

2. 修正Minio客户端的连接配置

Minio默认9000端口为HTTP,代码中误用HTTPS导致连接失败。以minio-py客户端为例,修改初始化代码:

from minio import Minio
import os

# 初始化Minio客户端,使用HTTP而非HTTPS
client = Minio(
    "minio:9000",
    access_key=os.getenv("MINIO_ROOT_USER"),
    secret_key=os.getenv("MINIO_ROOT_PASSWORD"),
    secure=False  # 关键:禁用HTTPS
)

确保代码中Minio的endpoint配置为http://minio:9000,而非HTTPS。

3. 等待Minio服务完全就绪后启动Backend

depends_on: service_started仅保证Minio容器启动,不代表服务就绪。给Minio添加健康检查,确保服务可用后再启动backend:
修改docker-compose.yml中minio服务的配置:

minio:
  # ... 原有配置
  healthcheck:
    test: ["CMD", "mc", "ready", "local"]
    interval: 5s
    timeout: 5s
    retries: 5

同时更新backend的depends_on:

backend:
  # ... 原有配置
  depends_on:
    # ... 其他依赖项
    minio:
      condition: service_healthy  # 等待Minio健康检查通过

4. 验证环境变量传递

确保backend服务能正确获取Minio的环境变量:

# 进入backend容器查看环境变量
docker exec -it <backend-container-name> echo $MINIO_ROOT_USER
docker exec -it <backend-container-name> echo $MINIO_ROOT_PASSWORD

如果变量为空,检查docker-compose.yml中backend的环境变量配置,或确认.env文件路径正确。

内容的提问来源于stack exchange,提问作者3awny

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.03 00:51:15