簡體   English   中英

連接拒絕從我的 Django 應用程序到 Minio Docker 實例

[英]Connection Refused to Minio Docker instance from my Django Application

嗨,我正在嘗試從 django 實例連接到我的 Minio 實例,該實例在 docker 容器內運行,該實例也在 docker 容器內運行。

我不斷收到此錯誤:

2020-10-29 13:59:17,568 urllib3.util.retry DEBUG    Incremented Retry for (url='/'): Retry(total=0, connect=None, read=None, redirect=None, status=None)
2020-10-29 13:59:20,773 urllib3.connectionpool WARNING  Retrying (Retry(total=0, connect=None, read=None, redirect=None, status=None)) after connection broken by 'SSLError(SSLError(1, '[SSL: WRONG_VERSION_NUMBER] wrong version number (_ssl.c:1076)'))': /
2020-10-29 13:59:20,774 urllib3.connectionpool DEBUG    Starting new HTTPS connection (6): minio:9000

我的 docker-compose 文件如下:

version: "3.7"

services:
    db:
        container_name: db
        image: mariadb
        restart: always
        ports:
          - '3306:3306'
        environment:
          MYSQL_DATABASE: 'django_dev'
          MYSQL_USER: 'user'
          MYSQL_PASSWORD: 'password'
          MYSQL_ROOT_PASSWORD: 'password'
        volumes:
          - ./mariadb:/var/lib/mysql

    minio:
        container_name: minio
        image: minio/minio
        command: 'server /export'
        environment: 
          MINIO_ACCESS_KEY: weak_access_key
          MINIO_SECRET_KEY: weak_secret_key
        ports:
          - '9000:9000'
        volumes:
          - ./minio:/export

    web:
        container_name: web
        build: 
          context: ./django/
          dockerfile: ./Dockerfile
          target: dev
        command: python manage.py runserver 0.0.0.0:8000
        volumes: 
          - ./django:/usr/src/app
        ports:
          - "8000:8000"
        env_file: 
          - ./.env.dev
        depends_on:
          - minio
          - db

    phpmyadmin:
        container_name: db_viewer
        image: phpmyadmin/phpmyadmin
        restart: always
        ports:
          - '8080:80'
        environment:
          PMA_HOST: db
          MYSQL_ROOT_PASSWORD: 'password'
        depends_on:
          - db

設置客戶端的代碼:

minioClient = Minio('minio:9000',
                  access_key='weak_access_key',
                  secret_key='weak_secret_key')
minioClient.list_buckets()

我使用 WSL2 作為開發環境。

Python 3.7.7 版、Django 3.1.2 版、Minio 6.0.0 版

感謝您的時間。

*編輯:我從我的機器上使用 localhost:9000 訪問 minio 服務。

如果您在 localhost 上工作,它將不會使用https Minio 構造函數的默認實現假定連接是https 要使用http而不是httpsMinio secure=False傳遞給Minio構造函數。

minioClient = Minio('minio:9000',
                  access_key='weak_access_key',
                  secret_key='weak_secret_key',
                  secure=False)
minioClient.list_buckets()

默認情況下,django minio 連接器嘗試使用 https 連接到 minio。 由於您沒有使用 https 運行 minio,連接器出錯,導致它不理解協議。 要解決此問題,只需在 djangos settings.py 中設置MINIO_STORAGE_USE_HTTPS=False (有關官方文檔,請參見此處)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM