【Laradockバージョン】docker-composeでMinio起動時にデフォルトのバケットを作成する
現在業務で、WEBサイトの作成・改修を行なっています。
Minioを利用して、画像のダウンロード・アップロード処理を行なっています。
複数のバケットを使用しているので、docker-compose up
の時に
バケットを、さくっと一括作成できればと考えました。
こちらの記事で、既に同じ内容が投稿されていたのですが、Laradockの
docker-compose.ymlファイルで試したところ、うまくいかなかったのでこの記事を書きました。
minioの設定
・アクセスキー:Accesskey
・シークレットキー:Secretkey
・バケット名:firstbucket
今回は、上記の設定で進めていきます。
アクセスキー・シークレットキー・バケット名に決まりはありません。
ご自身の好きな文字列に置き換えてください。
docker-compose.yml(初期値)
Minioの初期値は以下のようになっています。
environment
の下に、任意のアクセスキーとシークレットキーを設定してください。
しかし、このままだと、Minioを起動することしかできません。
新しくバケット作成を行うServiceを定義する必要があります。
### Minio ################################################
minio:
build: ./minio
volumes:
- ${DATA_PATH_HOST}/minio/data:/export
- ${DATA_PATH_HOST}/minio/config:/root/.minio
ports:
- "${MINIO_PORT}:9000"
environment:
- MINIO_ACCESS_KEY=Accesskey
- MINIO_SECRET_KEY=Secretkey
networks:
- frontend
- backend
docker-compose.yml(Bucket作成)
それでは、バケット作成用のServiceを、上記のymlファイルに組み込んでいきましょう。
今回、Service名をcreateBuckets
とします。(ここも任意の文字列で大丈夫です)
minio:
ーーー省略ーーー
createbuckets:
image: minio/mc:latest
depends_on:
- minio
entrypoint: >
/bin/sh -c "
until (/usr/bin/mc alias set myminio http://host.docker.internal:9000 Accesskey Secretkey --api S3v4) do echo '...waiting...' && sleep 1; done;
/usr/bin/mc admin info myminio;
/usr/bin/mc mb myminio/firstbucket;
/usr/bin/mc policy set download myminio/firstbucket
exit 0;
"
docker-compose up 実行結果
docker-compose up createbuckets
を入力して、
下記のような出力が出ると成功です。
$ docker-compose up createbuckets
laradock_minio_1 is up-to-date
Recreating laradock_createbuckets_1 ... done
Attaching to laradock_createbuckets_1
createbuckets_1 | Added `myminio` successfully.
createbuckets_1 | ● host.docker.internal:9000
createbuckets_1 | Uptime: 2 minutes
createbuckets_1 | Version: 2021-04-22T15:44:28Z
createbuckets_1 | Network: 1/1 OK
createbuckets_1 |
createbuckets_1 | 54 KiB Used, 8 Buckets, 5 Objects
createbuckets_1 | Bucket created successfully `myminio/firstbucket`.
createbuckets_1 | Access permission for `myminio/firstbucket` is set to `download`
laradock_createbuckets_1 exited with code 0
http://localhost:9000
にアクセスし、設定したアクセスキー・シークレットキーを使用して
ログインするとバケットが作成されているのが確認できます。
解説
ここからは、createbuckets
の内容を1行ずつ見ていきます。
createbuckets:
ここは、docker-compose up
の後に指定するサービス名です。
特に、決まりはないので、わかりやすく重複していない名前にしてください。
image: minio/mc:latest
ここでは、最新のMinio Clientのイメージを指定しています。
depends_on:
- minio
depends_on
は、コンテナを起動させる順番を決めるものです。
①minio ②createbucketsの順番で起動するように設定しています。
今回のcreatebuckets
のサービスは、Minioにバケットを作成するものなので、
このサービスが動く前に、Minioが起動している必要があります。
従って、このdepends_on
が必要になってきます。
しかし、この記事によると、保証してくれるのは起動の順番だけで、
起動が完了しているかどうかは、保証してくれないそうです。。
entrypoint: >
/bin/sh -c "
until (/usr/bin/mc alias set myminio http://host.docker.internal:9000 Accesskey Secretkey --api S3v4) do echo '...waiting...' && sleep 1; done;
/usr/bin/mc admin info myminio;
/usr/bin/mc mb myminio/firstbucket;
/usr/bin/mc policy set download myminio/firstbucket;
exit 0;
"
1行目
/bin/sh -c
では、その後にコマンドを入力することを定義しています。2行目前半
until (/usr/bin/mc alias set myminio http://host.docker.internal:9000 Accesskey Secretkey --api S3v4)
・until()
・ カッコ内の条件が真になるまで繰り返し実行される制御文です。(minioの起動を待つためです/起動していないと失敗してしまうので。)
・/usr/bin/mc alias set myminio http://host.docker.internal:9000 Accesskey Secretkey --api S3v4
・ 使用しているminioの情報(アクセスキー、シークレットキー、URL)myminio
という名前でエイリアス登録しています。2行目後半
do echo '...waiting...' && sleep 1; done;
・...waiting...
の文字列表示します。
・1秒間の待機時間を設けています。(minioの起動を待つため)3行目
/usr/bin/mc admin info myminio;
・先ほど2行目前半で登録したエイリアス(myminio)の情報を表示できます。4行目
/usr/bin/mc mb myminio/firstbucket;
・バケットを作成するコマンドです。
・mb
はおそらく、make bucket
の略語かな・・?
・登録したエイリアス名/作成したいバケット名
を指定してください。
・複数のバケットを作りたい場合は、この行を複数記述してください。5行目
/usr/bin/mc policy set download myminio/firstBucket;
・既存のバケットにポリシーを設定できます。
・今回は、download
を指定しているので、ダウンロードだけを許可する設定にしています。
・個人のニーズに応じて、複数記述したり、色々と変更してみてください。(使用可能なオプション:[none, download, upload, public])6行目
exit 0;
・サービスを終了させるコードです。
間違っている情報、うまく動かないなどありましたら、ぜひコメント欄にて教えてください。
最後まで、お読みいただきありがとうございました。
参考
docker-composeでMinio起動時にデフォルトのbucketを作成する -Qiita-
docker-compose depends_onとlinksの違い -Qiita-
MinIO Client Complete Guide
Laradock
minio/mc -Github-
Author And Source
この問題について(【Laradockバージョン】docker-composeでMinio起動時にデフォルトのバケットを作成する), 我々は、より多くの情報をここで見つけました https://qiita.com/wadakatu/items/1280ea9901aceca3b037著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .