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