es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Minio con Laravel, el nombre del bucket se agrega como subdominio en un servidor local.

Estoy utilizando minio para el almacenamiento de archivos, también lo he configurado todo utilizando docker-compose. Mi archivo de configuración del sistema de archivos de Laravel se ve así.

's3' => [
        'driver' => 's3',
        'key' => '',
        'secret' => '',
        'region' => 'ap-southeast-1',
        'bucket' => 'students',
        'endpoint' => 'http://minio:9000',
    ]

Puedo acceder al panel de control web de minio utilizando http://minio:9000. Pero al almacenar un objeto me encuentro con los siguientes errores.

// código para almacenar archivo
Storage::disk('s3')->put($carpetaBucket . $nombre, file_get_contents($archivo));

// Excepción lanzada
Error executing "PutObject" on "http://students.minio:9000/misc/1641374889-1033010763.png"; AWS HTTP error: cURL error 6: Could not resolve host: students.minio (see https://curl.haxx.se/libcurl/c/libcurl-errors.html) for http://students.minio:9000/misc/1641374889-1033010763.png

No sé por qué se agrega “students.” a la URL del punto final.

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Solución

    El problema parece estar en la configuración del nombre del bucket. El nombre del bucket students se está agregando a la URL del punto final, lo que está causando el error.

    Para solucionarlo, puedes eliminar el nombre del bucket del archivo de configuración y actualizarlo de la siguiente manera:

    's3' => [
        'driver' => 's3',
        'key' => '',
        'secret' => '',
        'region' => 'ap-southeast-1',
        'endpoint' => 'http://minio:9000',
        'bucket_endpoint' => false,
        'use_path_style_endpoint' => true,
        'bucket_name' => env('AWS_BUCKET'),
    ],
    

    Aquí, el bucket_name se establece como una variable de entorno, que se puede establecer en tu archivo .env. Esto asegurará que se utilice la URL de punto final correcta al almacenar un objeto en el almacenamiento de minio.

    Además, la configuración bucket_endpoint y use_path_style_endpoint se establecen en false y true respectivamente, esto asegurará que se utilice la URL de punto final correcta con un formato de estilo de ruta.

    Después de realizar estos cambios, es posible que debas reiniciar tus contenedores de Docker para que los cambios surtan efecto.

    docker-compose down
    docker-compose up -d
    

    Esto debería solucionar el problema y deberías poder almacenar archivos en tu almacenamiento de minio sin errores.

Comments are closed.