使用就绪的 shell 脚本通过 docker-compose 设置 LocalStack 时出错

问题描述 投票:0回答:1

尝试在将使用 AWS 服务的项目中设置 LocalStack 进行本地开发。尝试为 s3 和 sqs 设置它,但在设置过程中失败。

我使用这个示例作为 docker compose 的模板,但仍然无法让它工作。 https://docs.localstack.cloud/references/init-hooks/#usage-example

使用 Docker Desktop 在 Windows 计算机上运行。

这是来自 localstack 容器内部的日志。

Log from container

docker-compose.yml

version: '3.8'

name: test

services:
  localstack:
    container_name: "${LOCALSTACK_DOCKER_NAME:-localstack-main}"
    image: localstack/localstack:latest
    command: chmod +x /etc/localstack/init/ready.d/init-localstack.sh
    ports:
      - "4566:4566"
    environment:
      - DEBUG=1
    volumes:
      - "./init-localstack.sh:/etc/localstack/init/ready.d/init-localstack.sh"
      - "${LOCALSTACK_VOLUME_DIR:-./volume}:/var/lib/localstack"
      - "/var/run/docker.sock:/var/run/docker.sock"
     

init-localstack.sh

#!/bin/bash

awslocal s3 mb s3://my-bucket
awslocal sqs create-queue --queue-name my-queue

  1. 该文件确实出现在容器内,我可以在那里手动运行它。
  2. 我也尝试过 #!/bin/sh ,仍然遇到同样的问题。
  3. sh 和 bash 都在 bin 中。
  4. 我检查过shell文件中只有LF,没有CRLF
  5. 撰写文件中的命令正在尝试确保存在执行权限。

这似乎是文档中示例的基本复制粘贴,因此 shell 文件无法执行对我来说很奇怪。

我知道我可以通过在容器内手动运行命令来让它工作,但这在规模上不可行,所以希望它通过 compose 工作。

amazon-web-services localstack
1个回答
0
投票

不禁注意到您的 docker-compose 文件中没有任何

SERVICES
环境变量,并且以逗号分隔的列表列出了您需要启用的所有服务。例如

...
environment:
  - DEBUG=1
  - SERVICES=sqs,s3
...

我没有发现您的设置有任何其他问题。如果您仍然遇到问题,我可以建议使用 aws-cli 来创建资源的另一种方法。您可以在我的存储库中找到示例。或者,为 LocalStack 创建您自己的 docker 镜像,如有必要可以提供示例。

© www.soinside.com 2019 - 2024. All rights reserved.