尝试在将使用 AWS 服务的项目中设置 LocalStack 进行本地开发。尝试为 s3 和 sqs 设置它,但在设置过程中失败。
我使用这个示例作为 docker compose 的模板,但仍然无法让它工作。 https://docs.localstack.cloud/references/init-hooks/#usage-example
使用 Docker Desktop 在 Windows 计算机上运行。
这是来自 localstack 容器内部的日志。
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
这似乎是文档中示例的基本复制粘贴,因此 shell 文件无法执行对我来说很奇怪。
我知道我可以通过在容器内手动运行命令来让它工作,但这在规模上不可行,所以希望它通过 compose 工作。
不禁注意到您的 docker-compose 文件中没有任何
SERVICES
环境变量,并且以逗号分隔的列表列出了您需要启用的所有服务。例如
...
environment:
- DEBUG=1
- SERVICES=sqs,s3
...
我没有发现您的设置有任何其他问题。如果您仍然遇到问题,我可以建议使用 aws-cli 来创建资源的另一种方法。您可以在我的存储库中找到示例。或者,为 LocalStack 创建您自己的 docker 镜像,如有必要可以提供示例。