😄

Laravelでminioを使う

2024/08/21に公開

Laravelでminioを使う

minioの設定を毎回忘れるのでメモ

前提条件

docker-compose.ymlにminioの設定を書いておくこと

  storage:
    build: 
      context: .
      dockerfile: ./infra/storage/Dockerfile
    ports:
      - 9020:9020
      - 9090:9090
    environment:
      MINIO_ROOT_USER: root
      MINIO_ROOT_PASSWORD: password
    command: server --console-address ":9090" /data --address :9020
    volumes:
      - ./infra/storage/.minio/data:/data
    

.envに設定を書く

.env
AWS_ACCESS_KEY_ID=root
AWS_SECRET_ACCESS_KEY=password
AWS_DEFAULT_REGION=us-east-1
AWS_BUCKET=test-bucket
AWS_URL=http://localhost:9020/test-bucket
AWS_ENDPOINT=http://storage:9020
AWS_USE_PATH_STYLE_ENDPOINT=true

ローカル環境で必要なのは下の3つ
AWS_URLはブラウザなどからアクセスする際のアクセス用のURLを生成する際に利用
AWS_ENDPOINTはminioコンテナのアクセスポイント

エラーが発生した場合

設定を行った後、tinkerからファイルアップロードを試したら、以下のエラーが発生した

nable to write file at location: hello.json. Error executing "PutObject" on "http://minio:9090/test-bucket/hello.json"; AWS HTTP error: Client error: `PUT http://minio:9090/test-bucket/hello.json` resulted in a `400 Bad Request` response:

発生原因は.envのAWS_ENDPOINTのURLに指定していたコンテナ名を間違えていたこと。storageをminioと書いていた

インストール

composer require league/flysystem-aws-s3-v3 "^3.0" --with-all-dependencies

最後に

間違っていることがあれば、コメントに書いていただけると幸いです。
よろしくお願いいたします。

GitHubで編集を提案

Discussion