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

我正在尝试使用本地Amazon Dynamo DB创build一个Docker容器。 它实际上工作。 但我不明白如何在Docker文件中为此映像创build表?

通过javascript我创build一个这样的表:

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(...); 

UPDATE

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

 aws dynamodb list-tables --endpoint-url http://localhost:8000 

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

主要问题在于我用于本地dynamodb的基本映像。 我的意思是openjdk:8-jre-alpine看起来像高山分布没有什么重要的本地dynamodbfunction的重要。 所以这里是一个适用于本地dynamodb的Dockerfile:

 FROM openjdk:8-jre ENV DYNAMODB_VERSION=latest COPY .aws/ root/.aws/ RUN 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"] 

我会很高兴看到在这个特殊情况下高山的主要问题是什么。