如何使用卷将数据持久化在dockerized DynamoDB中

vee*_* yh 7 amazon-dynamodb docker docker-compose

我的docker compose文件有两个容器,看起来像这样

  version: '3'

  services:
     dynamodb:
       image: amazon/dynamodb-local
       ports: 
         - '8000:8000'
       networks:
         - testnetwork

     audit-server:
         image: audit-dynamo
         environment:
         DYNAMO_URL: 'http://0.0.0.0:8000'
         command: node app.js
         ports: 
           - '3000:3000'
         depends_on: 
           - dynamodb
         # restart: always

         networks:
           - testnetwork

  networks:
    testnetwork:
Run Code Online (Sandbox Code Playgroud)

我的目标是将本地数据装载到一定数量。目前正在丢失数据docker-compose down

Jak*_*jny 14

因此该映像默认使用内存中的dynamodb(通过在该映像上运行docker inspect可以找到的内容)

"CMD [\"-jar\" \"DynamoDBLocal.jar\" \"-inMemory\"]"
Run Code Online (Sandbox Code Playgroud)

因此,如果您想保留数据,则需要在docker-compose中执行以下操作:

version: '3'

volumes: 
  dynamodb_data:

services:
  dynamodb:
    image: amazon/dynamodb-local
    command: -jar DynamoDBLocal.jar -sharedDb -dbPath /home/dynamodblocal/data/
    volumes:
     - dynamodb_data:/home/dynamodblocal/data
Run Code Online (Sandbox Code Playgroud)

  • “.../data”有问题,所以只需将其删除并使用“/home/dynamodblocal”。配合得很好 (8认同)
  • @WeihangJian 尝试将 `user: root` 添加到 `dynamodb` 服务中。似乎需要 root 权限才能写入共享卷。 (4认同)
  • 我在 osx 上使用 docker 命名卷时遇到问题。通过在容器内的主机上安装本地路径来修复它,例如:- .data:/home/dynamodblocal/data (2认同)
  • 这是行不通的。不断收到错误消息“无法打开数据库文件” (2认同)

ala*_*yor 6

您可以尝试这个 docker-compose 配置:

version: '3'

volumes: 
  dynamodb_data:

services:
  dynamodb:
    image: amazon/dynamodb-local
    command: -jar DynamoDBLocal.jar -sharedDb -dbPath /home/dynamodblocal
    volumes:
     - dynamodb_data:/home/dynamodblocal
    ports:
     - "8000:8000"
Run Code Online (Sandbox Code Playgroud)