带有 docker-compose 的 DynamoDB Local 不起作用

Jav*_*ian 3 amazon-dynamodb docker docker-compose

我正在尝试使用 rabbit 和 dynamodb local 运行 docker-compose 当我通过命令行运行 dynamodb local 时它工作正常,我使用的命令是:

docker run -p 8000:8000 --name=dynamodb -v D:/volumes/dynamodb:/data/ -e AWS_ACCESS_KEY_ID=root -e AWS_SECRET_ACCESS_KEY=pass -e AWS_REGION=us-east-1 amazon/dynamodb-local -jar DynamoDBLocal.jar -sharedDb -dbPath /data
Run Code Online (Sandbox Code Playgroud)

但是当我尝试使用 docker compose 运行时,出现以下错误:

? docker logs dynamodb
Unrecognized option: -jar DynamoDBLocal.jar -sharedDb -dbPath /data
Error: Could not create the Java Virtual Machine.
Error: A fatal exception has occurred. Program will exit.
Run Code Online (Sandbox Code Playgroud)

我试过这样的命令:

  • -jar DynamoDBLocal.jar -sharedDb -dbPath /data
  • java -jar DynamoDBLocal.jar -sharedDb -dbPath /data
  • -jar DynamoDBLocal.jar -sharedDb -dbPath .data
  • java -jar DynamoDBLocal.jar -sharedDb -dbPath .data

但是,当我在开始时使用“java”运行时,错误是:

Error: Could not find or load main class java -jar DynamoDBLocal.jar -sharedDb -dbPath
Run Code Online (Sandbox Code Playgroud)

我尝试了不同的方法来使用音量和版本 2,但都没有奏效

我尝试执行以下操作:

我正在使用 docker(不是工具箱)和 Win10 我的 docker-compose 文件是:

version: "3"

  services:

    rabbit:
      container_name: rabbitmq
      image: rabbitmq:3-management
      ports:
        - "5672:5672"
        - "15672:15672"
      healthcheck:
        test: ["CMD", "rabbitmqctl", "node_health_check"]
        interval: 2s
        timeout: 3s
        retries: 30

    dynamodb:
      container_name: dynamodb
      image: amazon/dynamodb-local:latest
      ports:
        - "8000:8000"
      volumes:
        - ./volumes/dynamodb:/data/
      environment:
        AWS_ACCESS_KEY_ID: root
        AWS_SECRET_ACCESS_KEY: pass
        AWS_REGION: us-east-1
      command: ["java -jar DynamoDBLocal.jar -sharedDb -dbPath ./data"]
Run Code Online (Sandbox Code Playgroud)

Zei*_*tor 5

您要么以 exec 形式(即作为元素列表)或以 shell 形式(即作为单个字符串)编写您的命令,但您不能将两者混合...或者您会得到刚刚遇到的错误。选择以下任一项

command: "java -jar DynamoDBLocal.jar -sharedDb -dbPath ./data"
command: ["java", "-jar", "DynamoDBLocal.jar", "-sharedDb", "-dbPath", "./data"]
Run Code Online (Sandbox Code Playgroud)

参考:Dockerfile的CMD指令