ニュース

Docker Composeで構築するローカルS3環境:SeaweedFSとGarageの比較

SitePoint、Docker ComposeS3「Local S3 Storage with SeaweedFS & Garage in Docker Compose」。LaravelWordPress「S3」、。…

Docker Composeで構築するローカルS3環境:SeaweedFSとGarageの比較

SitePointが、Docker Compose環境で動かすS3互換のローカルストレージ構築ガイド「Local S3 Storage with SeaweedFS & Garage in Docker Compose」を公開しました。LaravelやWordPressの個人開発で「ローカルでもS3相当の挙動を再現したい」と感じていた方にとっては、ちょうど比較材料になりそうな内容です。

なぜ今、ローカルのS3互換環境の話が再び脚光を浴びるのか

Laravelで開発をしていると、Storage::disk('s3')で本番のS3バケットにアクセスする処理を書く機会は多いですよね。そんなとき「ローカルでも同じ操作感で動かしたい」「署名付きURLやmultipart uploadの挙動まで含めて再現性を確認したい」と思うことが少なくありません。

以前から使えるs3ドライバやMinIOなど選択肢はありましたが、SeaweedFSとGarageはそれぞれ設計思想が異なるため、プロジェクトの規模や用途次第で相性が分かれると言われています。SitePointの記事は、この2つをDocker Composeという共通基盤の上に並べ、それぞれの特徴を比較検討する構成になっているようです。

導入前に押さえておきたい3つの観点

ローカルにS3互換環境を持ち込むとき、私が現場で相談を受けることが多いのは次の3つです。

1. 本番との挙動差をどこまで埋めるか

S3の完全な互換を目指すのは、実は簡単ではありません。署名付きURLの有効期限、multipart uploadの挙動、CORS設定、IAMロールに相当する認証周りなど、AWS固有の仕様が絡む部分ほど差が出やすいので、テストしたい機能がどこまでの互換性を必要とするか、最初に切り分けておくことをおすすめします。

2. 永続化ボリュームの置き場所

Docker Composeで動かす場合、docker compose downを繰り返すうちにデータが消えてしまわないよう、ボリューム設定を意識的に決める必要があります。後で「コンテナを作り直したらデータも消えた」という失敗は本当に多いので、Composeファイルのvolumes:セクションは早めに確認しておくと安心です。

3. .envでの接続情報切り替え

Laravelのconfig/filesystems.phpは、ドライバごとに接続情報を切り替える必要があります。ローカルではSeaweedFS、本番ではAWS S3、と無意識に使い分けられるよう、ご自身の.env管理ルールを先に整えておくと、後々の混乱を防げます。

どちらを選ぶか、その判断軸

SeaweedFSは分散ファイルシステムとしての出自が強く、大容量データを扱える設計が特徴です。比較的大きめのテストデータを扱いたい、本番に近い容量感を試したいというケースに向いています。

一方、Garageは比較的新しいプロジェクトで、S3互換APIにフォーカスして軽量に動くことを目指しています。LaravelのStorageドライバを差し替えて、署名付きURL周りを中心に挙動を確認したい、というライトな用途には取り回しやすいでしょう。

どちらも「ローカルでS3互換を動かす」という目的は共通していますが、運用の重点が違うため、まずはご自身のプロジェクトで「ローカルS3に何をさせたいか」を書き出してから比較してみてください。「とりあえず動く」ではなく、それぞれの仕組みを理解したうえで選ぶ、というのが、個人開発を長く続けていくうえでもきっと効いてくるはずです。

ニュースをもっと見る