minioとは
Go言語で実装されたオブジェクト・ストレージ・サーバーです。Amazon S3とも互換性が高くローカル環境など個人で利用することに非常に使いやすいものになります。
今回こちらを使用する機会が訪れましたのでその時行ったことの備忘録用に残しておこうと思います。
手順
今回はminioに焦点を当てたい為、laravelの環境構築は割愛します。
まず、docker-compose.ymlに以下の内容を記載します。
version: '3'
services:
minio:
image: minio/minio:latest
container_name: minio
environment:
MINIO_ROOT_USER: localid # minioユーザーネーム
MINIO_ROOT_PASSWORD: localpassword # minioパスワード
command: ['minio', 'server', '/data', '--console-address', ':8080']
volumes:
- ./minio_data:/export # minioストレージの永続化
ports:
- '9000:9000' # APIのエンドポイント
- '8080:8080' # GUI画面のポート
次にdocker-compose build
,docker-compose up -d
でminioを立ち上げます。
立ち上がったらcomposer require league/flysystem-aws-s3-v3 "^3.0"
をインストールします。
※"^3.0"はLaravelのバージョンによって異なるのでそこは調べてみて下さい。
composerのインストールが終わったら以下ファイルを編集します。
's3' => [
'driver' => 's3',
'key' => env('AWS_ACCESS_KEY_ID'),
'secret' => env('AWS_SECRET_ACCESS_KEY'),
'region' => env('AWS_DEFAULT_REGION'),
'bucket' => env('AWS_BUCKET'),
'url' => env('AWS_URL'),
'endpoint' => env('AWS_ENDPOINT'),
'use_path_style_endpoint' => env('AWS_USE_PATH_STYLE_ENDPOINT', false),
'throw' => true, // minioのエラーをcatchしたい場合はtrue
],
それに合わせて.envファイルも編集します。
AWS_ACCESS_KEY_ID=localid
AWS_SECRET_ACCESS_KEY=localpassword
AWS_SESSION_TOKEN=
AWS_DEFAULT_REGION=ap-northeast-1
AWS_BUCKET=test
# ローカル環境のみ必要
AWS_URL=http://localhost:8000
AWS_ENDPOINT=http://minio:9000
AWS_USE_PATH_STYLE_ENDPOINT=true
するとhttp://localhost:8080
でminioのページが見れるようになります。
MINIO_ROOT_USERとMINIO_ROOT_PASSWORDを入力して
bucketsを作成して下さい。名前はtestにしておきましょう。
そこまで完了したらphpのコンテナに入り以下のコマンドを打ち出したtrueが出たら接続完了です。
php artisan tinker
Storage::disk('s3')->put('hello.json', '{"hello": "world"}')
感想
今回minioの環境構築をやってみました。少しエラーに悩まされた部分もありますが、全体的に簡単に構築できおすすめです。laravelのstrage以外に保存してみたい方や、今後S3を使う予定のある方は使ってみてはいかがでしょうか。
是非弊社開発課のXのフォローもよろしくです!
毎日エンジニアに向けた情報発信を行っています!