在容器内连接到Amazon的DynamoDB

时间:2019-11-18 14:47:18

标签: node.js docker amazon-dynamodb containers aws-sdk

我正在尝试使用 node dynamoDB 设置本地环境,但是我无法在我的应用容器内连接到DynamoDB容器。

它适用于nodemon,但不适用于2个容器。

我公开了所需的端口,并添加了所需的环境变量,但是我仍然遇到此错误

Error: connect ECONNREFUSED 127.0.0.1:8000
    at TCPConnectWrap.afterConnec

这是我的Docker文件:

FROM node:12-alpine

WORKDIR /usr/src/app

ENV AWS_ACCESS_KEY_ID=24534
ENV AWS_SECRET_ACCESS_KEY=33535

COPY package*.json ./

RUN npm install

COPY . .

CMD [ "npm", "start" ]

EXPOSE 3000

这是我的docker-compose.yml文件:

version: "3"
services:
  app:
    build: .
    ports:
      - 3000:3000
      - 8001:8001
    volumes:
      - ~/.aws:/root/.aws
      - .env:/usr/src/app/.env

  dynamodb:
    image: amazon/dynamodb-local
    ports:
      - 8000:8000

我的节点应用程序已启动(我的测试端点正常运行),但是它不起作用,谢谢您的帮助。

有关信息,这是我如何在节点应用程序中连接到aws-sdk

const AWS = require('aws-sdk');

AWS.config.update({
  region: process.env.AWSRegion,
  endpoint: process.env.AWSEndpoint
});
AWSRegion=eu-west-3
AWSEndpoint="http://localhost:8000"

1 个答案:

答案 0 :(得分:0)

因此,我终于实现了在我的应用程序容器内访问dynamoDB容器的操作。

应用容器中的

localhost指的是容器,因此我必须在.env文件中进行更改:

  • 来自AWSEndpoint=http://localhost:8000
  • AWSEndpoint=http://dynamodb:8000

默认情况下,使用docker-compose.yml文件无需在容器之间定义links,因为默认情况下它们在同一网络上是 bridge ,因此这些更改使其有效。