Laravel Sailで途中からMinioを導入したい

なにこれ

Laravel Sailを使用して開発環境を構築したけれど、途中でMinioを導入したくなった人に向けた記事です。

ちなみに、最初からMinioを使うことがわかっている場合は、プロジェクト作成時のコマンドでMinioを指定することができます。

先人の知恵はこちら

実装

1 docker-composeを編集

docker-composeにMinioのコンテナを作成します。

設定は以下をご参照ください。

minio: . . .①
 image: 'minio/minio:latest'
 ports:
  - '9000:9000'
  - '8900:8900'
 environment:
  MINIO_ROOT_USER: 'ユーザー名'
  MINIO_ROOT_PASSWORD: 'パスワード'
 volumes:
  - 'sail-minio:/data/minio'
 networks:
  - sail
 command: minio server /data/minio --console-address ":8900"

volumes: . . . ②
 sail-minio:
  driver: local

Minio用のコンテナを作成します。
Minio用にvolumesを設定します。
これをdocker-compose.ymlに追記して、sail upで再起動します。
ちなみにこちらの設定はsailの初期設定でMinioを選んだ際に作成されるものから最小限の設定を抜き出したものになります。

2 .envを編集

.env にMinioの設定を追記します。
FILESYSTEM_DRIVER=s3
AWS_ACCESS_KEY_ID=ユーザー名
AWS_SECRET_ACCESS_KEY=パスワード
AWS_DEFAULT_REGION=us-east-1
AWS_BUCKET=local
AWS_URL=http://localhost:9000
AWS_ENDPOINT=http://minio:9000
AWS_USE_PATH_STYLE_ENDPOINT=true

3 S3の設定

config\filesystems.phpにS3の設定を追記します。

'disks' => [
.
.
.
'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),
 ],
],

これで.envに記載した情報でS3の環境が作成されます。

 

4 ブラウザにアクセス

ここまででMInioの設定は完了したので、http://localhost:8900にアクセスしてMinioのログイン画面が表示されることを確認してください。

アクセスできたら、設定したユーザー名とパスワードを入れるとログインができます。

あとは、アプリケーション内でS3を使うように実装するとMinioに画像が保存されます。

 

以上!!!!!!!