针对 DynamoDB-Local 测试容器

问题描述

我想在将容器推送到 aws ecs 之前在本地测试它。

我使用 Go (aws-sdk-go-v2) 端点解析器对 docker-compose 堆栈(包括 dynamodb-local 容器)运行单元测试,并将 http://localhost:8000 作为 URL。

所以我想在本地构建和测试容器,并意识到我需要将它附加到由 docker-compose 创建的认网络。我对此有点挣扎,所以我建立了一个精简的试验。我创建了一个端点解析器,其 URL 为 http://dynamo-local:8000(在 d-c 中将容器命名为 dynamo-local)并将其附加到 docker run 中的认网络。

现在一切正常,我可以成功执行各种表操作,但让我感到困惑的一件事是,如果我运行 aws cli:

aws --endpoint-url=http://localhost:8000 dynamodb 列表

然后当肯定存在表时,输出显示不存在表。我天真地假设,因为我可以访问具有不同端点的同一容器的端口 8000,所以我应该能够访问相同的资源。错了。

显然是我的教育差距。我错过了什么?我需要将试用扩展到对完整应用的适当测试,因此了解这里发生的事情对我来说很重要。

有没有办法使用 aws cli 访问表?

docker-compose 文件

version: '3.5'
services:
  localstack:
    image: localstack/localstack:latest
    container_name: localstack_test
    ports:
      - '4566:4566'
    environment:
      - SERVICES=s3,sns,sqs,lambda
      - DEBUG=1
      - data_dir=
    volumes:
      - './.AWSServices:/tmp/AWSServices'
      - '/var/run/docker.sock:/var/run/docker.sock'

  Nginx:
    build:
      context: .
      dockerfile: Dockerfile
    image: chanonry/urlfiles-Nginx:latest
    container_name: Nginx
    ports:
      - '8080:80'

  dynamodb:
    image: amazon/dynamodb-local:1.13.6
    container_name: dynamo-local
    ports:
      - '8000:8000'


networks:
  default:
    name: test-net

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)