У меня есть следующее 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?