Как заставить Minio-клиент (с хоста) общаться с Minio-сервером (Docker-контейнером)? - PullRequest
2 голосов
/ 29 марта 2019

Я запускаю мини-сервер в контейнере docker-compose. Я пытаюсь загрузить файл на мини-сервер в контейнере с хост-машины (Ubuntu) (вместо контейнера) с помощью мини-клиента (Python SDK). Я не сделал это, как ожидалось. Мне не ясно, из-за моей конечной точки (URL) или из-за проблемы соединения между контейнером и хостом?

Конечные точки, которые я пробовал:

url_1 = 'http://minio:9000' # из моей настройки по умолчанию для minio link;

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 на localhost.

######### 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')
######### docker-yml файл для Minio
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

Я ожидал увидеть загруженные файлы из браузера minio ('http://localhost:9000/minio/test'), точно так же, как я сделал, активировав minio-server и minio-client на хосте.

1 Ответ

1 голос
/ 05 июня 2019

При использовании докерной сети по умолчанию вам нужно будет попытаться получить доступ к minio на http://localhost:9000 на вашем хосте.Таким образом, вы можете просто использовать этот URL в вашем скрипте Python.http://minio:9000 будет работать с контейнерами в той же сети докеров, что и ваш сервер minio.

...