使用localstack和docker-compose自动创建SQS队列

pla*_*oom 11 docker-compose localstack

有没有办法使用 localstack 和 docker-compose.yml 自动创建 SQS 队列?

我的 docker-compose.yml:

version: '3.8'
services:
  localstack:
    image: localstack/localstack
    ports:
      - "4566:4566"
      - "4571:4571"
      - "${PORT_WEB_UI-8080}:${PORT_WEB_UI-8080}"
    environment:
      - SERVICES=${SERVICES- }
      - DEBUG=${DEBUG- }
      - DATA_DIR=${DATA_DIR- }
      - PORT_WEB_UI=${PORT_WEB_UI- }
      - LAMBDA_EXECUTOR=${LAMBDA_EXECUTOR- }
      - KINESIS_ERROR_PROBABILITY=${KINESIS_ERROR_PROBABILITY- }
      - DOCKER_HOST=unix:///var/run/docker.sock
    volumes:
      - "${TMPDIR:-/tmp/localstack}:/tmp/localstack"

Run Code Online (Sandbox Code Playgroud)

我希望在启动 docker-compose 时创建一些队列,而不是手动创建它。

bul*_*are 24

如果您想在 docker up 上自动引导所有需要的队列,您可以添加一个 shell 脚本,该脚本将由 localstack 在 docker 容器启动时运行。

这是一个例子。

添加到您的volumes以下内容:

- ./localstack_bootstrap:/docker-entrypoint-initaws.d/
Run Code Online (Sandbox Code Playgroud)

然后将一个 shell 脚本添加到上面指定的目录(localstack_bootstrap在我的例子中)中,该脚本具有您喜欢的任何名称(我决定这样称呼它sqs_bootstrap.sh),其中包含以下内容:

#!/usr/bin/env bash

set -euo pipefail

# enable debug
# set -x

echo "configuring sqs"
echo "==================="
LOCALSTACK_HOST=localhost
AWS_REGION=eu-central-1

create_queue() {
    local QUEUE_NAME_TO_CREATE=$1
    awslocal --endpoint-url=http://${LOCALSTACK_HOST}:4566 sqs create-queue --queue-name ${QUEUE_NAME_TO_CREATE} --region ${AWS_REGION} --attributes VisibilityTimeout=30
}

create_queue "queue1"
create_queue "queue2"
Run Code Online (Sandbox Code Playgroud)

别忘了奔跑chmod +x ./localstack_bootstrap/sqs_bootstrap.sh

我在这里找到了更多详细信息 - https://joerg-pfruender.github.io/software/docker/microservices/testing/2020/01/25/Localstack_in_Docker.html

  • 非常感谢您的工作。顺便说一句,最新版本(目前为 1.3)声明 `/docker-entrypoint-initaws.d/` 现已弃用,并使用 `/etc/localstack/init/ready.d` 代替。 (13认同)