💨
docker composeを用いてminioサーバーを構築する方法
目的
- docker composeを使ってminioサーバーを構築する方法を記述する
- ネット上にある方法だとエラーが出る人を助ける
対象読者
- docker composeでminioサーバーを構築する方法を探している人
- docker composeでminioサーバーを構築しようとしてエラーが出た人
- docker composeで立ち上げたminioサーバーにアクセスしようとすると、以下のエラーが出る人
mc: <ERROR> Unable to initialize new alias from the provided credentials. The Access Key Id you provided does not exist in our records.
記事執筆背景
まず、S3互換性のあるObject Storageをローカルで立ち上げて、いい感じの開発環境を整えたかったので、minioをdocker composeにServiceとして追加しようと思った。
また、立ち上げたサーバーにバケットを作成するためのService(init-minioと命名)を追加したかった。
要するにここで紹介されていることをしたかった。
だが、上述したエラーが出てしまい、先に進められなかった。
今回、このエラーを解決したので、情報をまとめておけば、誰かの役に立つかもしれないと思ったので、記事を書いている。
結論
以下のdocker-compose.ymlでやりたいことができる(部分的に抜粋)。
minio:
image: quay.io/minio/minio:latest
environment:
MINIO_ROOT_USER: root
MINIO_ROOT_PASSWORD: password
command: server /data --console-address ":9001"
ports:
- "9000:9000"
- "9001:9001"
volumes:
- ./minio/data:/data
init-minio:
image: minio/mc:latest
depends_on:
- minio
entrypoint: >
/bin/sh -c "/usr/bin/mc alias set myminio http://minio:9000 root password; /usr/bin/mc rm -r --force myminio/recilabo-local; /usr/bin/mc mb myminio/recilabo-local; exit 0;"
補足
元々書いていたdocker-compose.ymlは以下のものだった。
上記のやつとの違いはminio.environment.MINIO_ACCESS_KEY/MINIO_SECRET_KEYがあること。
当初私は「MINIO_ROOT_USERとPASSWORDはコンソールにログインするために必要で、MINIO_ACCESS_KEYとSECRET_KEYはcliでアクセスしたりプログラムでアクセスする時に必要なのか?」とか思っていたが、そうではなかった。
ソースコードを読んだわけではないので、正しくない可能性が高いが、どうもMINIO_ROOT_USERとMINIO_ROOT_PASSWORDが優先されるようだ。
これら2つを同時に設定している人は注意したほうが良いかもしれない。
minio:
image: quay.io/minio/minio:latest
environment:
MINIO_ROOT_USER: root
MINIO_ROOT_PASSWORD: password
MINIO_ACCESS_KEY: access_key
MINIO_SECRET_KEY: secret_key
command: server /data --console-address ":9001"
ports:
- "9000:9000"
- "9001:9001"
volumes:
- ./minio/data:/data
init-minio:
image: minio/mc:latest
depends_on:
- minio
entrypoint: >
/bin/sh -c "/usr/bin/mc alias set myminio http://minio:9000 access_key secret_key; /usr/bin/mc rm -r --force myminio/recilabo-local; /usr/bin/mc mb myminio/recilabo-local; exit 0;"
$ make init-minio
docker compose up init-minio
mc: <ERROR> Unable to initialize new alias from the provided credentials. The Access Key Id you provided does not exist in our records.
mc: <ERROR> Failed to remove `myminio/recilabo-local` recursively. Requested file `/myminio/recilabo-local` not found
Bucket created successfully `myminio/recilabo-local`.
exited with code 0
Discussion