从 docker 容器内部和外部访问预先指定的 get URL 的 minio 对象

Kri*_*hna 5 nginx docker docker-compose minio fastapi

我使用以下 docker-compose.yml 文件来部署 FastAPI、MongoDB、Minio docker 容器。

version: '3.7'
services: 
  db:
    image: mongo:latest
    container_name: mongodb
    user: 1000:1000
    volumes: 
      - /home/krishna/mongodb/db:/data/db

  minio:
    image: minio/minio:latest
    container_name: minio
    command: server /data --console-address ":9001"
    ports:
      - 9000:9000
      - 9001:9001
    volumes:
      - /data:/data

  app:
    build: .
    container_name: imaging_container
    ports:
      - 8888:8888
Run Code Online (Sandbox Code Playgroud)

从 FastAPI 内部,我可以使用minio:9000端点连接到 minio 实例。API 返回所请求的 minio 对象的get_presigned_url输出,但 url 的形式为http:// minio:9000 /imaging/images/30d12c89...我无法从 docker 容器外部访问它。

我找到了一个快速修复/解决方法来解决此问题,即将这一行添加到/etc/hosts文件中即可

127.0.0.1       minio
Run Code Online (Sandbox Code Playgroud)

但这在我看来是一个廉价的解决方案,主机必须修改他/她的机器。

我觉得这个问题可以通过在 docker 容器中添加nginx 代理来轻松解决。但我不知道该怎么做?

如果您可以建议 nginx 配置设置来解决此问题,或者也欢迎任何其他建议,那将会很有帮助。

Pra*_*h S 0

您可以尝试通过 docker 端口转发(网络)公开端口,或者请查看指南: https: //docs.min.io/docs/setup-nginx-proxy-with-minio