docker起動時にlocalstackのS3バケットを作成させてみます。
簡単なlocalstackの説明は前回を参考にして下さい。
コンテナ作成
準備
今回のdocker-compose.ymlは以下の通りです。
version: "3.8"
services:
localstack:
container_name: "sample_localstack_01"
image: localstack/localstack:latest
ports:
- 4567:4566 # LocalStack Gateway
environment:
- SERVICES=s3
volumes:
# 配置したスクリプトが起動時に自動実行される
- ./boot:/etc/localstack/init/ready.d
起動時に実行されるスクリプト
コンテナ内の以下のディレクトリにシェルスクリプトを配置すると自動で実行してくれます。
/etc/localstack/init/ready.d
今回はホスト側は boot というディレクトリへマウントさせています。
従って、bootディレクトリにシェルスクリプトを配置しておけば、docker起動時にシェルスクリプトが実行されます。
シェルスクリプト
bootディレクトリ以下にシェルスクリプトを配置します。
内容はS3バケットを作成するコマンドを記載します。
なお、awslocalコマンドはlocalstackで使用するaws cliのラッパーみたいなもの(正確には違うかも)です。
#!/bin/bash
awslocal s3 mb s3://localstack-bucket
確認
コンテナを起動します。
docker-compose up
バケットが作成されている事を確認します。
aws s3 ls --endpoint-url=http://localhost:4567 --profile localstack