概要
- MiniOコンテナを自動作成するスクリプトを簡単に紹介する。
方法
-
下記のようなスクリプトを実行することでコンテナの作成とバケットのポリシーの設定をする事ができる。
until (/usr/bin/mc config host add myminio http://minio:ポート数 ルートユーザー名 ルートユーザーパスワード) do echo '...waiting...' && sleep 1; done; /usr/bin/mc mb myminio/作成したいバケット名; /usr/bin/mc anonymous set 未認証者のバケットアクセスポリシー myminio/作成したいバケット名;
-
docker-compose.ymlの記載は下記のようになる。
docker-compose.ymlminio: build: context: ./.docker/minio dockerfile: Dockerfile volumes: - "./minio/data:/data:delegated" ports: - ${MINIO_API_HOST_PORT}:${MINIO_API_CONTAINER_PORT} - ${MINIO_CONSOLE_HOST_PORT}:${MINIO_CONSOLE_CONTAINER_PORT} environment: - MINIO_ROOT_USER=${MINIO_ROOT_USER} - MINIO_ROOT_PASSWORD=${MINIO_ROOT_PASSWORD} - MINIO_SERVER_ADDRESS=${MINIO_SERVER_ADDRESS} - MINIO_BUCKET_NAME=${MINIO_BUCKET_NAME} command: server /data --console-address :${MINIO_CONSOLE_HOST_PORT} createbuckets: image: minio/mc depends_on: - minio environment: - MINIO_API_CONTAINER_PORT=${MINIO_API_CONTAINER_PORT} - MINIO_ROOT_USER=${MINIO_ROOT_USER} - MINIO_ROOT_PASSWORD=${MINIO_ROOT_PASSWORD} - MINIO_SERVER_ADDRESS=${MINIO_SERVER_ADDRESS} - MINIO_BUCKET_NAME=${MINIO_BUCKET_NAME} entrypoint: > /bin/sh -c " until (/usr/bin/mc config host add myminio http://minio:$$MINIO_API_CONTAINER_PORT $$MINIO_ROOT_USER $$MINIO_ROOT_PASSWORD) do echo '...waiting...' && sleep 1; done; /usr/bin/mc mb myminio/$$MINIO_BUCKET_NAME; /usr/bin/mc anonymous set none myminio/$$MINIO_BUCKET_NAME; exit 0; "
-
docker-compose.ymlと同階層に.envを定義して下記の様に記載した。(一部値は都合上マスクする。)
.env# minio MINIO_API_HOST_PORT=9000 MINIO_API_CONTAINER_PORT=9000 MINIO_CONSOLE_HOST_PORT=9001 MINIO_CONSOLE_CONTAINER_PORT=9001 MINIO_ROOT_USER=root_user MINIO_ROOT_PASSWORD=XXXXXXXXXXXX MINIO_BUCKET_NAME=hoge MINIO_SERVER_ADDRESS=http://localhost:9000
-
すでに既存設定でバケットが作られている場合は
rm -rf ./minio/data/*
を実行し、MiniOの永続化データを削除する。 -
下記コマンドを実行し、docker-compose.ymlに記載したスクリプトを実行する。
docker-compose up -d
バケットポリシーについて
-
バケットポリシーはスクリプトの下記の部分で設定している。
/usr/bin/mc anonymous set none myminio/$$MINIO_BUCKET_NAME;
-
上記の
none
がポリシーの指定に当たる。 -
このポリシーは「未認証者」に対するポリシーである。
-
ポリシーは下記の種類がある。
- none: S3でいうとPrivateバケット(ただし、「未認証者」たる匿名ユーザー向けのポリシー設定なため、純粋なPrivateバケットの設定とは異なるかもしれない。)
- download: ダウンロードのみ許可
- upload: アップロードのみ許可
- public: S3でいうとPublicバケット
-
参考程度にそれぞれのポリシーを割り当ててバケットを作成したときのMiniO上の見た目を下記にまとめる。
-
none: S3でいうとPrivateバケット
/usr/bin/mc anonymous set none myminio/$$MINIO_BUCKET_NAME;
でバケット作成 -
download: ダウンロードのみ許可
/usr/bin/mc anonymous set download myminio/$$MINIO_BUCKET_NAME;
でバケット作成 -
upload: アップロードのみ許可
/usr/bin/mc anonymous set upload myminio/$$MINIO_BUCKET_NAME;
でバケット作成 -
public: S3でいうとPublicバケット
/usr/bin/mc anonymous set public myminio/$$MINIO_BUCKET_NAME;
でバケット作成
-
おまけ
-
docker-compose up -b
を実行してもエラーも出ず、コンテナも作られない場合、下記の様にログをターミナルで見ることでなにかつかめるかもしれない。
-
自分の環境でいうとログを見るコマンドは下記になる。
docker-compose logs createbuckets
参考文献