我在docker-compose的容器中运行了一个微型服务器。我正在尝试使用minio-client (python SDK)从主机(Ubuntu) (而不是容器)上载一个文件到容器中的minio-server。我没有让它像预期的那样发生。我不清楚是因为我的端点(URL),还是因为容器和主机之间的连接问题?
我尝试的端点:
url_1 = 'http://minio:9000‘#来自我的迷你链接的默认设置;
来自微型浏览器的url_2 = 'http://localhost:9000/minio/test‘#。
对于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。我可以在localhost的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')用于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我期望从微型浏览器(‘http://localhost:9000/minio/test’)看到上传的文件,就像我在主机上激活微型服务器和微型客户端所做的那样。
发布于 2019-06-06 02:07:10
使用默认的docker网络,您必须尝试访问主机上http://localhost:9000上的minio。因此,您可以在Python脚本中使用此URL。http://minio:9000将从与您的微型服务器相同的docker网络上的容器中工作。
发布于 2020-10-16 19:14:09
尝试使用Pyminio客户端而不是boto3。
import os
from pyminio import Pyminio
pyminio_client = Pyminio.from_credentials(
endpoint='http://localhost:9000/',
access_key=os.environ['USER'],
secret_key=getpass.getpass('Password:')
)
pyminio_client.mkdirs('/test/')
pyminio_client.put_file(
to_path='/test/',
file_path=os.path.join(os.getcwd(), 'test.txt')
)发布于 2021-02-16 14:18:52
在compose.yml文件中使用此配置
version: "3"
services:
minio:
image: "minio/minio"
container_name: mi
ports:
- "9000:9000"
environment:
- "MINIO_ACCESS_KEY=ACCRESS"
- "MINIO_SECRET_KEY=SECRET"
restart: always
command: server /data
mc:
image: minio/mc
container_name: mc
network_mode: host
entrypoint: >
/bin/sh -c "
/usr/bin/mc config host add minio http://127.0.0.1:9000 ACCESS SECRET;
/usr/bin/mc rm -r --force minio/psb-new;
/usr/bin/mc mb minio/psb-new;
/usr/bin/mc policy set public minio/psb-new;
exit 0;
"
networks:
elastic:
driver: bridgehttps://stackoverflow.com/questions/55423376
复制相似问题