Docker:如何为本地Dynamo DB创建表?

Ale*_*ein 2 amazon-dynamodb docker

我正在尝试使用本地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

});
Run Code Online (Sandbox Code Playgroud)

这是我的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"]
Run Code Online (Sandbox Code Playgroud)

Iva*_*tyk 5

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

做类似的事情:

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

更新

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

aws dynamodb list-tables --endpoint-url http://localhost:8000
Run Code Online (Sandbox Code Playgroud)

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