连接拒绝来自我的 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 服务。
默认情况下,django minio 连接器尝试使用 https 连接到 minio。由于您不是 运行 带有 https 的 minio,连接器会出错,因为它不理解协议。
要修复,只需在 djangos settings.py.
中设置 MINIO_STORAGE_USE_HTTPS=False
(请参阅官方文档 here)
如果您在本地主机上工作,它不会使用 https
。 Minio 构造函数的默认实现假定连接是 https
。
要使用 http
而不是 https
,请将 secure=False
传递给 Minio
构造函数。
minioClient = Minio('minio:9000',
access_key='weak_access_key',
secret_key='weak_secret_key',
secure=False)
minioClient.list_buckets()
你好,我正在尝试从 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 服务。
默认情况下,django minio 连接器尝试使用 https 连接到 minio。由于您不是 运行 带有 https 的 minio,连接器会出错,因为它不理解协议。 要修复,只需在 djangos settings.py.
中设置MINIO_STORAGE_USE_HTTPS=False
(请参阅官方文档 here)
如果您在本地主机上工作,它不会使用 https
。 Minio 构造函数的默认实现假定连接是 https
。
要使用 http
而不是 https
,请将 secure=False
传递给 Minio
构造函数。
minioClient = Minio('minio:9000',
access_key='weak_access_key',
secret_key='weak_secret_key',
secure=False)
minioClient.list_buckets()