7
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Laravel×minio×Dockerで環境構築

Last updated at Posted at 2024-02-08

minioとは

Go言語で実装されたオブジェクト・ストレージ・サーバーです。Amazon S3とも互換性が高くローカル環境など個人で利用することに非常に使いやすいものになります。
今回こちらを使用する機会が訪れましたのでその時行ったことの備忘録用に残しておこうと思います。

手順

今回はminioに焦点を当てたい為、laravelの環境構築は割愛します。
まず、docker-compose.ymlに以下の内容を記載します。

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のインストールが終わったら以下ファイルを編集します。

Laravel/config/filesystems.php
'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ファイルも編集します。

.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のフォローもよろしくです!
毎日エンジニアに向けた情報発信を行っています!

7
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?