如何让 Minio-client(来自主机)与 Minio-server(docker 容器)对话?

min*_*der 5 python python-2.7 docker-compose ubuntu-16.04 minio

我在 docker-compose 的容器中运行一个 minio-server。我正在尝试使用 minio-client(python SDK)从主机(Ubuntu)(而不是容器)将文件上传到容器中的 minio-server。我没有让它按预期发生。我不清楚是因为我的端点(URL),还是因为容器和主机之间的连接问题?

我尝试的端点:

url_1 = ' http://minio:9000 ' # 来自我默认的 minio 链接设置;

url_2 = ' http://localhost:9000/minio/test ' # 来自 Minio 浏览器。

对于 url_1,我得到的是:“ botocore.exceptions.EndpointConnectionError:无法连接到端点 URL:http://minio:9000/test ”。错误行:s3.create_bucket(Bucket='test')

对于 url_2,我得到的是:“对该存储桶的所有访问都已被禁用。”。错误行:s3.create_bucket(Bucket='test')

我尝试了类似的事情:在我的主机上激活我的 minio-server 和 minio-client。然后我将文件从 minio-client 上传到 minio-server。我可以在本地主机的 Minio 浏览器中看到那些上传的文件。

#########python脚本上传文件
import boto3

from botocore.client import Config

import os

import getpass

my_url1='http://minio:9000' # this is from os.environ['S3_URL']
my_url2='http://localhost:9000/minio/test' # this is from browser

s3 = boto3.resource('s3',
                endpoint_url=my_url2,
                aws_access_key_id=os.environ['USER'],
                aws_secret_access_key = getpass.getpass('Password:'),
                config = Config(signature_version='s3v4'),
                region_name='us-east-1')

print ('********', s3)

s3.create_bucket(Bucket='test')

uploadfile= os.getcwd()+'/'+'test.txt'
s3.Bucket('testBucket').upload_file(uploadfile,'txt')
Run Code Online (Sandbox Code Playgroud) ######### Minio 的 docker-yml 文件
minio:
   image: minio/minio
   entrypoint:
      - minio
      - server
      -/data
   ports:
      - "9000:9000"
   environment:
      minio_access_key = username
      minio_secret_key = password

mc:
   image: minio/mc
   environment: 
      minio_access_key = username
      minio_secret_key = password
   entrypoint:
      /bin/sh -c     
   depends_on:
      minio
Run Code Online (Sandbox Code Playgroud)

我希望从 minio 浏览器(' http://localhost:9000/minio/test ')看到上传的文件,就像我在主机上激活 minio-server 和 minio-client 所做的一样。

don*_*llo 3

使用默认的 docker 网络,您必须尝试在主机上通过http://localhost:9000访问 minio。因此,您可以在 Python 脚本中使用此 URL。http ://minio:9000将在与您的 minio 服务器位于同一 docker 网络上的容器中工作。