首页 > 解决方案 > 在 localstack 上自动创建 S3 存储桶

问题描述

在我的 docker-compose 中使用 localstack 主要是为了模仿 S3。

我知道我可以创建存储桶,这不是问题。我想做的是在运行 docker-compose up 时自动创建存储桶。

是否已经为 localstack 内置了一些东西?

标签: amazon-s3docker-composelocalstack

解决方案


自 version 以来此提交0.10.0带来的更改。

当容器第一次启动时,它将执行扩展名为 .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

在目录中有一个脚本./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  |

推荐阅读