ymmooot

minio の public アクセスを有効化する

サービスでは S3 に画像を置き、CDN 経由で配信している。画像へのアクセスは CDN からのものにのみ許可をしている。
ローカルの開発では S3 の代わりに minio のコンテナを立てて代用しているが、ローカルに CDN の代替を用意していないので、minio から直接ブラウザで画像を見れるようにする。

docker-compose.ymlversion: '3'
services:
  minio:
    image: minio/minio:latest
    environment:
      - MINIO_ACCESS_KEY=MINIO_ACCESS_KEY
      - MINIO_SECRET_KEY=MINIO_SECRET_KEY
      - MINIO_BUCKET_NAME=mybucket
    ports:
      - 9000:9000
    entrypoint: sh
    command: -c 'mkdir -p /data/$$MINIO_BUCKET_NAME && /usr/bin/minio server /data'
  mc:
    image: minio/mc:latest
    depends_on:
      - minio
    entrypoint: sh
    command: -c 'mc config host add myminio http://minio:9000 MINIO_ACCESS_KEY MINIO_SECRET_KEY && mc policy set public myminio/mybucket'

これで docker-compose up すれば、minio が起動した後にバケットごと public にできる。