Tho*_*rge 13 amazon-s3 docker-compose atlassian-localstack
在docker中使用localstack-compose主要是为了模仿S3.
我知道我可以创建桶,这不是问题.我想做的是在运行docker-compose时自动创建存储桶.
是否已为localstack构建了一些东西?
Mat*_*man 47
自 version 以来此提交带来的更改0.10.0
。
当容器第一次启动时,它将执行扩展名为 .sh 的文件,这些文件位于 .sh 中
/docker-entrypoint-initaws.d
。文件将按字母顺序执行。您可以在初始化脚本中使用 awslocal(或 aws)cli 工具在 localstack 上轻松创建 aws 资源。
version: '3.7'
services:
localstack:
image: localstack/localstack
environment:
- SERVICES=s3
ports:
- "4566:4566"
# - "4572:4572" Old S3 port
volumes:
- ./aws:/docker-entrypoint-initaws.d
Run Code Online (Sandbox Code Playgroud)
使用目录中的脚本./aws/buckets.sh
:
#!/bin/bash
set -x
awslocal s3 mb s3://bucket
set +x
Run Code Online (Sandbox Code Playgroud)
注意: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 |
Run Code Online (Sandbox Code Playgroud)
我已经能够使用 Localstack 和某种“解决方法”来实现这一点:
启动本地堆栈
创建预期的存储桶,例如:
aws --endpoint-url=http://localhost:4572 s3 mb s3://test1
Run Code Online (Sandbox Code Playgroud)
上面的行将更新s3_api_calls.json
Localstack 目录中的文件(默认情况下,在 Linux 上它是
/tmp/localstack/data
备份文件
/tmp/localstack/data
在再次启动堆栈之前,将复制的文件放入 Localstack 目录(默认情况下)
再次启动 Localstack 后,您应该能够看到类似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
/docker-entrypoint-initaws.d
自 2022 年 12 月 1 日起,LocalStack 宣布随着v1.3.0的发布,弃用旧版初始化脚本 ( ) 。替代品 -可插拔初始化挂钩- 是在 v1.1.0 中引入的。
它们将在 v2.0.0 中被完全删除/docker-entrypoint-initaws.d
,这会给使用最新版本 LocalStack 的任何人带来风险。
这将是一个突破性的改变。
为了面向未来,接受的答案仍然有效,但我建议替换/docker-entrypoint-initaws.d
为/etc/localstack/init/ready.d
.
这将模仿之前的预期行为,因为它将挂钩到READY
LocalStack 可以实际创建 S3 存储桶的阶段,同时确保您仍然可以继续更新 LocalStack。
这将是最好的电流Dockerfile
:
version: '3.8'
services:
localstack:
image: localstack/localstack:latest
environment:
- SERVICES=s3
ports:
- "4566:4566"
volumes:
- ./aws:/etc/localstack/init/ready.d
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
1261 次 |
最近记录: |