サービスでは 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 にできる。