😄
Laravelでminioを使う
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
最後に
間違っていることがあれば、コメントに書いていただけると幸いです。
よろしくお願いいたします。
Discussion