SerafimArts
@SerafimArts
Senior Notepad Reader

Как примонтировать docker контейнер s3 (AWS)?

TL;DR: Хост стороннего контейнера имеет следующий вид "blahblah", но подключиться к нему надо, имея в качестве имени "some.blahblah".

А теперь чуть подробнее:

Поднял контейнер с s3 (minito), имеет следующие конфиги:
minio:
        container_name: "minio"
        build: ./docker/minio
        volumes:
            - minio:/export
        ports:
            - "9000:9000"
        environment:
            - MINIO_ACCESS_KEY=access
            - MINIO_SECRET_KEY=secretkey


Т.е. ничего экстраординарного. Для подключения из под основного клиента (контейнера приложения) использую следующий хост: minio:9000.

Всё логично, всё резолвится.

Но если использовать бакет (без него - не работает) - хост заменяется на "bucket.minio:9000" и естественно он уже не резолвится.

Починить можно захардкодив оный в родительском контейнере (в том, кто обращается к s3) через:
extra_hosts:
    - "bucket.minio:172.25.0.4"

В этом случае при обращении к bucket.minio запрос пойдёт на нужный айпишник (при удачных обстоятельствах, когда он действительно 172.25.0.4) и всё ок. Но это суперкостыль, что довольно очевидно.

Вопрос: Как нормально подключиться к контейнеру s3 (с именем minio) имея в качестве адреса хоста "bucket.minio"? Или всё же какой-нибудь нгинкс прокси запилить?

Конфиги окружения следующие:
S3_HOST=http://minio:9000
S3_KEY=access
S3_SECRET=secret
S3_REGION=us-east-1
S3_BUCKET=bucket

Драйвер AWS от Flysystem (дефолтный для Laravel).

UPD1: Вот такой вариант в Dockerfile, шайтанамана, не пашет, хотя казалось бы...
RUN getent hosts minio | awk '{ print $1 " bucket." $2 }' >> /etc/hosts

// Original
$ ping minio
PING minio (172.26.0.4): 56 data bytes
64 bytes from 172.26.0.4: icmp_seq=0 ttl=64 time=0.065 ms
$ curl minio:9000
<?xml version="1.0" encoding="UTF-8"?>
<Error><Code>AccessDenied</Code><Message>Access Denied.</Message><Key></Key><BucketName></BucketName><Resource>/</Resource><RequestId>3L137</RequestId><HostId>3L137</HostId></Error>

// Alias
$ ping bucket.minio
PING bucket.minio (172.25.0.4): 56 data bytes
...
36 packets transmitted, 0 packets received, 100% packet loss
$ curl bucket.minio:9000
...
Вообще вешается
  • Вопрос задан
  • 947 просмотров
Решения вопроса 1
SerafimArts
@SerafimArts Автор вопроса
Senior Notepad Reader
Чит-код:
minio:
    container_name: "bucket.minio" <---
    build: ./docker/minio
   ...


И всё заработало. Но это как-то.... Хм, ну фиг знает...
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы