This package fixes a feature in spatie/laravel-media-library where temporary URLs are generated incorrectly when using Minio. It returns the endpoint URL which is inaccessible outside of a Docker application network. This will ensure that the temporary URL generated is accessible outside of the Docker application network.
This assumes that you have a Minio container running on the same Docker network as your Laravel application.
composer require coreproc/laravel-minio-media-library-provider
Publish the config file:
php artisan vendor:publish --provider="Coreproc\LaravelMinioMediaLibraryProvider\MinioServiceProvider"
Make sure that you have the following environment variable set:
MINIO_URL=http://localhost:9001
Although, when using CoreProc's Laravel Docker, this is already set for you from environment variables set in our
docker-compose.yml
file.
If MNIO_URL
is not set, there will be no changes to the default Laravel Media Library URL Generator. This is useful
in production environments where you don't want to use the temporary URL generator.
Next, change the url_generator
in your config/media-library.php
file to the UrlGenerator
in this package:
'url_generator' => \Coreproc\LaravelMinioMediaLibraryProvider\UrlGenerator::class,
That's it! You should now be able to correctly generate temporary URLs for your media files hosted with Minio.
If you have any S3
disks that you don't want to route through the MINIO_URL, you can add the is_minio => false
to
your disk in the config/filesystems.php
file:
return [
'disks' => [
...
'other-s3' => [
'driver' => 's3',
...
'is_minio' => false,
],
],
];