Docker Compose部署MinIO无法创建存储桶报错问题咨询
问题根因
配置存在3个核心错误:
- MinIO环境变量过时:当前版本MinIO已弃用
MINIO_ACCESS_KEY、MINIO_SECRET_KEY配置项,必须使用MINIO_ROOT_USER、MINIO_ROOT_PASSWORD设置初始账号密码,否则自定义凭证不会生效,服务端会生成随机密钥,触发密钥不存在的报错。 - 启动逻辑不可靠+YAML格式错误:写死
sleep 10无法保证MinIO完成初始化,MinIO未就绪时发起请求就会触发i/o超时;同时entrypoint下的shell脚本缩进不符合YAML规范,存在执行异常风险。 - 手动执行命令的上下文错误:直接通过
docker container run启动的mc容器默认不在compose项目的专属网络内,也没有预先配置MinIO的连接地址、凭证信息,根本无法连通你部署的MinIO实例。
修复方案
直接使用以下修正后的docker-compose配置:
version: '3.8' services: minio: image: minio/minio:latest command: server /data --console-address ":9001" ports: - "54322:9000" - "54323:9001" volumes: - minio-data:/data environment: MINIO_ROOT_USER: minio MINIO_ROOT_PASSWORD: minio123 healthcheck: test: ["CMD", "curl", "-f", "http://localhost:9000/minio/health/live"] interval: 3s timeout: 2s retries: 10 networks: - minio-net create_buckets: image: minio/mc:latest depends_on: minio: condition: service_healthy entrypoint: > /bin/sh -c " /usr/bin/mc config host rm s3; /usr/bin/mc config host add --quiet --api s3v4 s3 http://minio:9000 minio minio123; /usr/bin/mc mb --quiet s3/vais; /usr/bin/mc policy set public s3/vais; exit 0; " networks: - minio-net volumes: minio-data: networks: minio-net: driver: bridge
配置改动说明:
- 替换了已弃用的MinIO环境变量,固定控制台端口为9001避免随机端口导致的访问异常
- 新增MinIO健康检查逻辑,create_buckets会等MinIO服务完全就绪后再执行初始化操作,无需写死等待时间
- 两个服务加入同一个自定义桥接网络,保证容器间网络连通
- 修正了entrypoint字段的YAML缩进格式
如果需要手动执行mc命令操作MinIO,使用以下命令(替换<compose项目名>为你实际的docker compose项目名,默认是当前文件夹名):
docker run --rm --network <compose项目名>_minio-net minio/mc:latest /bin/sh -c " mc config host add s3 http://minio:9000 minio minio123; mc mb s3/vais; mc policy set public s3/vais; "
内容的提问来源于stack exchange,提问作者Makar Shokarev
相关产品推荐
相关产品推荐

