rsc*_*ter 7 docker docker-compose atlassian-localstack
我一直在使用localstack来针对本地开发服务。我刚刚通过运行他们的码头工人形象docker run --rm -p 4567-4583:4567-4583 -p 8080:8080 localstack/localstack
然后,我手动运行一个小脚本来设置我的S3存储桶,SQS队列等。
现在,我想让其他人更容易做到这一点,所以我想只添加一个Dockerfile和docker-compose.yml文件。不幸的是,当我尝试启动并运行它时,使用时出现docker-compose up一个错误,即安装脚本中的命令无法连接到localstack服务。
make_bucket failed: s3://localbucket Could not connect to the endpoint URL: "http://localhost:4572/localbucket"
Run Code Online (Sandbox Code Playgroud)
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"]
Run Code Online (Sandbox Code Playgroud)
docker-compose.yml
version: '3'
services:
localstack:
build: .
ports:
- "8080:8080"
- "4567-4582:4567-4582"
Run Code Online (Sandbox Code Playgroud)
localSetup.sh
#!/bin/bash
aws --endpoint-url=http://localhost:4572 s3 mb s3://localbucket
#additional similar calls but left off for brevity
Run Code Online (Sandbox Code Playgroud)
我曾尝试在脚本命令中切换localhost到127.0.0.1,但最终出现相同的错误。我可能在这里想念一些愚蠢的东西。
小智 7
当 localstack 全新启动时,还有另一种创建自定义 AWS 资源的方法。由于您已经有一个用于资源的 bash 脚本,因此您只需将脚本卷安装到/docker-entrypoint-initaws.d/. 所以我的 composefile 将是:
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'
Run Code Online (Sandbox Code Playgroud)
此外,我宁愿awslocal过aws --endpoint在bash脚本,因为它充分利用凭据工作和端点为您服务。
尝试将主机名添加到 docker-compose 文件并编辑入口点文件以反映该主机名。
docker-compose.yml
version: '3'
services:
localstack:
build: .
hostname: localstack
ports:
- "8080:8080"
- "4567-4582:4567-4582"
Run Code Online (Sandbox Code Playgroud)
本地安装程序
#!/bin/bash
aws --endpoint-url=http://localstack:4572 s3 mb s3://localbucket
Run Code Online (Sandbox Code Playgroud)
这是我docker-compose-dev.yaml用来测试使用 localstack 的应用程序的。我使用了该命令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'
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1958 次 |
| 最近记录: |