我一直在使用localstack开发一个针对本地的服务。我刚刚通过docker run --rm -p 4567-4583:4567-4583 -p 8080:8080 localstack/localstack运行了他们的docker图像
然后,我手动运行一个小脚本来设置我的S3存储桶、SQS队列等。
现在,我想让其他人更容易,所以我想我只需要添加一个Dockerfile和docker-compose.yml文件。不幸的是,当我尝试启动并运行它时,使用docker-compose up时,我得到了一个错误,即我的安装脚本中的命令无法连接到本地堆栈服务。
make_bucket failed: s3://localbucket Could not connect to the endpoint URL: "http://localhost:4572/localbucket"Dockerfile:
FROM localstack/localstack
#since this is just local dev set up, localstack doesn't require
anything specific here.
ENV AWS_DEFAULT_REGION='[useast1]'
ENV AWS_ACCESS_KEY_ID='[lloyd]'
ENV AWS_SECRET_ACCESS_KEY='[christmas]'
COPY bin/localSetup.sh /localSetup.sh
COPY fixtures/notifications.json /notifications.json
RUN ["chmod", "+x", "/localSetup.sh"]
RUN pip install awscli
# expose service & web dashboard ports
EXPOSE 4567-4582 8080
ENTRYPOINT ["/localSetup.sh"]docker-compose.yml
version: '3'
services:
localstack:
build: .
ports:
- "8080:8080"
- "4567-4582:4567-4582"localSetup.sh
#!/bin/bash
aws --endpoint-url=http://localhost:4572 s3 mb s3://localbucket
#additional similar calls but left off for brevity我尝试在我的脚本命令中将localhost切换到127.0.0.1,但最终得到了相同的错误。我可能漏掉了一些愚蠢的东西。
发布于 2020-07-07 15:22:32
由于您已经有了资源的create your custom AWS resources when localstack freshly start up.脚本,因此还有另一种方法可以将脚本卷挂载到/docker-entrypoint-initaws.d/。所以我的组合文件是:
localstack:
image: localstack/localstack:latest
container_name: localstack_aws
ports:
- '4563-4599:4563-4599'
- '8055:8080'
environment:
- SERVICES=s3
- DEFAULT_REGION=us-east-1
volumes:
- './localSetup.sh:/docker-entrypoint-initaws.d/make-s3.sh'此外,我更喜欢在bash脚本中使用awslocal而不是aws --endpoint,因为它可以为您利用凭据工作和端点。
发布于 2018-12-13 04:29:02
尝试将hostname添加到docker-compose文件,并编辑您的入口点文件以反映该主机名。
docker-compose.yml
version: '3'
services:
localstack:
build: .
hostname: localstack
ports:
- "8080:8080"
- "4567-4582:4567-4582"localSetup.sh
#!/bin/bash
aws --endpoint-url=http://localstack:4572 s3 mb s3://localbucket这是我用来测试使用本地堆栈的应用程序的docker-compose-dev.yaml。我使用了命令docker-compose -f docker-compose-dev.yaml up,我也使用了与您使用的相同的localSetup.sh。
version: '3'
services:
localstack:
image: localstack/localstack
hostname: localstack
ports:
- "4567-4584:4567-4584"
- "${PORT_WEB_UI-8082}:${PORT_WEB_UI-8082}"
environment:
- SERVICES=s3
- DEBUG=1
- DATA_DIR=${DATA_DIR- }
- PORT_WEB_UI=${PORT_WEB_UI- }
- DOCKER_HOST=unix:///var/run/docker.sock
volumes:
- "${TMPDIR:-/tmp/localstack}:/tmp/localstack"
- "/var/run/docker.sock:/var/run/docker.sock"
networks:
- backend
sample-app:
image: "sample-app/sample-app:latest"
networks:
- backend
links:
- localstack
depends_on:
- "localstack"
networks:
backend:
driver: 'bridge'https://stackoverflow.com/questions/53563942
复制相似问题