docker-compose: как использовать minio внутри и вне сети docker - PullRequest
0 голосов
/ 17 июня 2019

У меня есть следующее docker-compose.yml для запуска локальной среды для моего приложения Laravel.

version: '3'
services:
  app:
    build:
      context: .
      dockerfile: .docker/php/Dockerfile
    ports:
      - 80:80
      - 443:443
    volumes:
      - .:/var/www:delegated
    environment:
      AWS_ACCESS_KEY_ID: minio_access_key
      AWS_SECRET_ACCESS_KEY: minio_secret_key
      AWS_BUCKET: Bucket
      AWS_ENDPOINT: http://s3:9000
    links:
      - database
      - s3
  database:
    image: mariadb:10.3
    ports:
      - 63306:3306
    environment:
      MYSQL_ROOT_PASSWORD: secret
  s3:
    image: minio/minio
    ports:
      - "9000:9000"
    volumes:
      - ./storage/minio:/data
    environment:
      MINIO_ACCESS_KEY: minio_access_key
      MINIO_SECRET_KEY: minio_secret_key
    command: server /data

Как видите, я использую minio в качестве хранилища, совместимого с AWS S3. Это работает очень хорошо, но когда я генерирую URL для файла (Storage::disk('s3')->url('some-file.txt')), очевидно, я получаю URL-адрес, подобный этому http://s3:9000/Bucket/some-file.txt, который не работает вне сети Docker.

Я уже пытался установить AWS_ENDPOINT на http://127.0.0.1:9000, но затем Laravel не может подключиться к серверу Minio ...

Есть ли способ настроить Docker / Laravel / Minio для генерации URL-адресов, доступных внутри и за пределами сети Docker?

1 Ответ

0 голосов
/ 17 июня 2019

Поскольку вы сопоставляете порт 9000 на хосте с этой службой, вы сможете получить к нему доступ через s3: 9000, если просто добавите s3 в файл хостов (/ etc / hosts в Mac / Linux)

Добавьте это 127.0.0.1 s3 в файл хостов, и вы сможете получить доступ к контейнеру s3 с вашего хоста, используя https://s3:9000/path/to/file

Это означает, что вы можете использовать имя хоста s3 изнутри ивне докер сети

...