😼

S3互換のMinIOを使ってローカル開発を捗らせよう! in 2023

2023/01/12に公開

はじめに

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: このオプションを入れると既に作成済みの場合は無視してくれます
        • バケット名に _ は使えないので注意

実行

# 起動
docker compose up -d minio

# 初期バケット作成
docker compose run --rm createbuckets

管理画面から確認

ログイン画面かっちょいいい!!!!

docker-compose.yml に設定したユーザー/パスワードでログインします。

  • ユーザー: minio_root
  • パスワード: minio_password

しっかりデフォルトバケット作成されていますね!
これでローカル開発が捗ります。

以上、ご覧いただきありがとうございました!

Discussion