😼
S3互換のMinIOを使ってローカル開発を捗らせよう! in 2023
はじめに
2021年くらいにMinIOを使っていたのですが、久しぶりに触ったらちょっと変わっていたのでメモを残します。
実行環境
- macOS
- Docker
- Docker Compose
※MinIO自体はLinux/Windows/macOSに対応しています!
今回はお手軽に構築したいのでDockerを使用します。
できること
- Amazon S3に直接アクセスせず、ローカルでS3相当の操作が行える
- 管理画面があるので直感的
- コマンドラインからの操作も可能(mcコマンド)
- AWS SDK経由での操作も可能(今回は実行方法などは記載しません)
環境構築
以下の docker-compose.yml
を作成します。
services:
minio:
image: minio/minio:RELEASE.2023-01-06T18-11-18Z
command: ["server", "/data", "--console-address", ":9090"]
volumes:
- "minio:/data"
environment:
- MINIO_ROOT_USER=minio_root
- MINIO_ROOT_PASSWORD=minio_password
ports:
- "9000:9000"
- "9090:9090"
createbuckets:
image: minio/mc:RELEASE.2022-12-24T15-21-38Z
depends_on:
- minio
entrypoint: >
/bin/sh -c "
mc alias set my_minio http://minio:9000 minio_root minio_password;
mc mb --ignore-existing my_minio/default-bucket;
"
volumes:
minio:
driver: local
解説
- image: イメージは記事作成時の最新を指定しました。
- command: MinIOのサーバーを起動するコマンドです。
- volumes: MinIOサーバーに保存したファイルとローカルを同期します
- environments:
- MINIO_ROOT_USER: MinIOにログインするためのユーザー ※8文字以上にしないと怒られます
- MINIO_ROOT_PASSWORD: MinIOにログインするためのパスワード ※8文字以上にしないと怒られます
- ports:
- 9000: APIでアクセスする際のポート
- 9090: 管理画面のポート
- createbuckets: イメージ起動時に自動でバケットを作成するためのコマンド ※必要に応じて設定してください
- entrypoint:
- mc alias: MinIOサーバーのエイリアスを設定します
- mc mb: バケットを作成します
- --ignore-existing: このオプションを入れると既に作成済みの場合は無視してくれます
- バケット名に
_
は使えないので注意
- entrypoint:
実行
# 起動
docker compose up -d minio
# 初期バケット作成
docker compose run --rm createbuckets
管理画面から確認
ログイン画面かっちょいいい!!!!
docker-compose.yml
に設定したユーザー/パスワードでログインします。
- ユーザー: minio_root
- パスワード: minio_password
しっかりデフォルトバケット作成されていますね!
これでローカル開発が捗ります。
以上、ご覧いただきありがとうございました!
Discussion