在我的docker-compose中使用localstack主要是模仿S3。
我知道我可以创建存储桶,这不是问题。我想做的是在运行docker-compose时自动创建存储桶。
已经为本地堆栈构建了一些东西吗?
答案 0 :(得分:3)
此commit自版本0.10.0
起带来的变化。
首次启动容器时,它将执行文件 在
/docker-entrypoint-initaws.d
中带有扩展名.sh。 文件将按字母顺序执行。您可以轻松创建 使用以下命令中的awslocal(或aws)cli工具在本地堆栈上的aws资源 初始化脚本。
version: '3.7'
services:
localstack:
image: localstack/localstack
environment:
- SERVICES=s3
ports:
- "4572:4572"
volumes:
- ./aws:/docker-entrypoint-initaws.d
在目录./aws/buckets.sh
中具有脚本:
#!/bin/bash
set -x
awslocal s3 mb s3://bucket
set +x
注意:set [-/+] x
纯粹是用于打开和关闭正在执行的命令的输出。
将产生以下输出:
...
localstack_1 | Starting mock S3 (http port 4572)...
localstack_1 | Waiting for all LocalStack services to be ready
localstack_1 | Ready.
localstack_1 | /usr/local/bin/docker-entrypoint.sh: running /docker-entrypoint-initaws.d/buckets.sh
localstack_1 | ++ awslocal s3 mb s3://bucket
localstack_1 | make_bucket: bucket
localstack_1 | ++ set +x
localstack_1 |
答案 1 :(得分:0)
我能够使用“解决方法”通过Localstack实现此目标:
创建预期的存储分区,例如:
aws --endpoint-url=http://localhost:4572 s3 mb s3://test1
s3_api_calls.json
文件(在Linux上默认为
/tmp/localstack/data
/tmp/localstack/data
)2019-03-21T08:38:28:INFO:localstack.utils.persistence: Restored 2 API calls from persistent file: /tmp/localstack/data/s3_api_calls.json
的内容,并且存储桶应该可用:aws --endpoint-url=http://localhost:4572 s3 ls s3://test1
答案 2 :(得分:0)
DATA_DIR:用于保存持久数据的本地目录(当前仅支持以下服务:Kinesis,DynamoDB,Elasticsearch,S3)