はじめに
Amazon S3バケットにファイルアップロードする実装は存在したものの、開発用のS3バケットが用意されていなかったのでAmazon S3バケットに替わるストレージをローカルで用意することができないか調べたところ、今回紹介するMinIO
を見つけたので設定方法を備忘録として記載します。
MinIOとは
MinIO は、GNU Affero General Public License v3.0 に基づいてリリースされた高性能オブジェクト ストレージです。 Amazon S3クラウドストレージサービスとAPI互換です。 MinIO を使用して、機械学習、分析、およびアプリケーション データ ワークロード用の高性能インフラストラクチャを構築します。
※ https://github.com/minio/minio の README.md より抜粋 & Google翻訳
実行環境
バージョン | |
---|---|
Docker Compose | 2.6.1 |
Laravel | 8.83.17 |
設定
Docker設定
MinIO公式のDocker Imageを使ってMiniIOのコンテナを定義
docker-compose.yml
minio:
image: minio/minio:latest
container_name: minio
ports:
- "9000:9000"
- "9002:9002"
environment:
- MINIO_ACCESS_KEY=minio_access_key # アクセスキー
- MINIO_SECRET_KEY=minio_secret_key # シークレットキー
entrypoint: sh
command: -c "/opt/bin/minio server /data --console-address :9002;" # コンソールのポート番号を指定
volumes:
- minio:/data
volumes:
minio:
.envファイル設定
S3関連の定義を記載
.env
AWS_S3_ACCESS_KEY_ID=minio
AWS_S3_SECRET_ACCESS_KEY=minio123
AWS_S3_DEFAULT_REGION=ap-northeast-1
AWS_S3_BUCKET=develop # バケット名
AWS_S3_URL=http://localhost:9000/develop # バックエンドからリソース取得する場合のURL
AWS_S3_ENDPOINT=http://minio:9000 # 外部(ブラウザから参照する場合など)のURL
AWS_S3_USE_PATH_STYLE_ENDPOINT=true
config/filesystems.php の設定
filesystems.php
's3' => [
'driver' => 's3',
'key' => env('AWS_S3_ACCESS_KEY_ID'),
'secret' => env('AWS_S3_SECRET_ACCESS_KEY'),
'region' => env('AWS_S3_DEFAULT_REGION'),
'bucket' => env('AWS_S3_BUCKET'),
'url' => env('AWS_S3_URL'),
'endpoint' => env('AWS_S3_ENDPOINT'),
'path' => env('AWS_S3_PATH'),
'use_path_style_endpoint' => env('AWS_S3_USE_PATH_STYLE_ENDPOINT', false),
],
minIO管理画面アクセス
dockerコンテナ起動後、 http://localhost:9002 にアクセス
ID / パスワードはdocker-compose.yml
に記載
何度かファイルアップロードを試して作成したバケットに保存されていることを確認