Docker:如何为本地发电机数据库创建表?

标签 docker amazon-dynamodb

我正在尝试使用本地 Amazon Dynamo DB 创建一个 docker 容器。它确实有效。但是我不明白如何在 Docker 文件中为这个图像创建一个表?

通过javascript,我创建了一个这样的表:

var params = {
    TableName: 'UserActivity',
    KeySchema: [ 
        {
            AttributeName: 'user_id',
            KeyType: 'HASH',
        },
        {
            AttributeName: 'user_action', 
            KeyType: 'RANGE', 
        }
    ],
    AttributeDefinitions: [
        {
            AttributeName: 'user_id',
            AttributeType: 'S',
        },
        {
            AttributeName: 'user_action',
            AttributeType: 'S',
        }
    ],
    ProvisionedThroughput: {
        ReadCapacityUnits: 2, 
        WriteCapacityUnits: 2, 
    }
};
dynamodb.createTable(params, function(err, data) {
    if (err) ppJson(err); // an error occurred
    else ppJson(data); // successful response

});

这是我的 Docker 文件:
FROM openjdk:8-jre-alpine

ENV DYNAMODB_VERSION=latest

RUN apk add --update curl && \
    rm -rf /var/cache/apk/* && \
    curl -O https://s3-us-west-2.amazonaws.com/dynamodb-local/dynamodb_local_${DYNAMODB_VERSION}.tar.gz && \
    tar zxvf dynamodb_local_${DYNAMODB_VERSION}.tar.gz && \
    rm dynamodb_local_${DYNAMODB_VERSION}.tar.gz

EXPOSE 8000

ENTRYPOINT ["java", "-Djava.library.path=.", "-jar", "DynamoDBLocal.jar",  "--sharedDb", "-inMemory", "-port", "8000"]

最佳答案

您需要将 DynamoDB 客户端指向本地 DynamoDB 终端节点。

做类似的事情:

dynamodb = new AWS.DynamoDB({
    endpoint: new AWS.Endpoint('http://localhost:8000')
});
dynamodb.createTable(...);

更新

或者,您可以使用 AWS CLI 在本地 DynamoDB 中创建表,而无需使用 JavaSciprt 代码。您需要使用“--endpoint-url”将 CLI 指向您的本地实例,如下所示:
aws dynamodb list-tables --endpoint-url http://localhost:8000

您需要使用 create-table创建表的命令。

关于Docker:如何为本地发电机数据库创建表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45508588/

相关文章:

node.js - Docker - NPM 安装本地包

node.js - 使用 AWS Lambda( Node )在 AWS DynamoDB 中更新项目

javascript - 如何在 AWS DynamoDB 中按排序键查询?

node.js - 滚动的 DynamoDB 原子计数器

php - Docker 镜像容器 - 我在哪里可以存储我的文件?

Docker 总是显示 "Docker Engine starting..."

amazon-web-services - 没有排序键的 AWS API Gateway DynamoDB GetItem?

amazon-dynamodb - 如何在 DynamoDB 中更新项目并维护 CreatedAt 和 UpdatedAt 字段?

docker - 使用 ansible 部署最新的 docker 容器

docker - Docker Swarm覆盖-加密的网络和防火墙