s3を使ったアプリケーションの開発用にローカルでlocalstackやminio等を使う場合に
docker-compose内でs3 bucketをつくる
最終
localstackの場合
services:
storage_init:
image: maruware/awscli-wait-for-it
environment:
- AWS_DEFAULT_REGION=ap-northeast-1
- AWS_DEFAULT_OUTPUT=json
- AWS_ACCESS_KEY_ID=access
- AWS_SECRET_ACCESS_KEY=secretsecret
depends_on:
- localstack
entrypoint: >
/wait-for-it.sh localstack:4572 --
bash -c "aws --endpoint-url=http://localstack:4572 s3api head-bucket --bucket bucket ||
aws --endpoint-url=http://localstack:4572 s3 mb s3://bucket/"
経過
今までアプリケーション内で分岐してBucketをつくっていたけど、上記で見かけて良さそうだったので参考に。
volumeのマウントとかめんどくさいのでimage内にwait-for-it.shも入れた。
Bucketがないときだけ登録したいのでhead-bucketをはさむようにした。