LaravelでMinIOを利用する備忘録
概要
AmazonS3クラウドストレージサービスと互換性のあるAPI
メリット
ファイルアップロード機能などが存在する場合、ローカルでもS3に保存するテストが書ける
イメージ
👍 Laravel × MinIOの環境構築
docker-compose.yml
minio: image: minio/minio:RELEASE.2021-07-08T01-15-01Z.fips volumes: - ./minio:/data ports: - ${IP}:9000:9000 environment: MINIO_ACCESS_KEY: admin MINIO_SECRET_KEY: password command: server /data
.env(Laravel)
AWS_URL=http://minio:9000 AWS_ACCESS_KEY_ID=admin AWS_SECRET_ACCESS_KEY=password AWS_DEFAULT_REGION=us-east-1 AWS_BUCKET=xxBucket AWS_PATH_STYLE_ENDPOINT=true
💦 Dockerで使用する際のAWS_URLの設定の注意
.env(Laravel)
のAWS_URL
の項目がDockerを使用している場合はホスト名にコンテナ名を入れる
minio: ← これがコンテナ名 image: minio/minio:RELEASE.2021-07-08T01-15-01Z.fips volumes: - ./minio:/data ports: - ${IP}:9000:9000 environment: MINIO_ACCESS_KEY: admin MINIO_SECRET_KEY: password command: server /data =================================== AWS_URL=http://minio:9000
💦 Dockerで使用している場合の画像URL問題
概要
仮にコンテナ名がminio
だった場合、Storage::url($path)
を使用すると以下のようなURLが返却される
http://minio:9000/xxxx/xxx.jpg
これだとクライアントからアクセスしても接続できない
対処法
負けた気がするが、hostsファイルに以下のように設定するとホスト側からでも閲覧できる
ホスト側のminioのIP minio