更改Amazon / dynamodb本地端口

时间:2019-07-03 22:28:48

标签: docker amazon-dynamodb amazon-dynamodb-local

如何更改通过Amazon Docker映像启动的dynamodb端口?

根据此answer,在执行dynamodb Java文件时可以使用-port选项。

但是,当使用以下命令运行docker映像时:docker run -p 8000:8000 amazon/dynamodb-local我没有选择指定dynamodb侦听的端口,仅选择连接我的主机和容器之间的端口。

我必须创建自己的Dockerfile,指定操作系统并安装dynamodb等功能,这样我才能运行java命令并指定端口吗?

3 个答案:

答案 0 :(得分:1)

我尝试使用官方图像覆盖入口点,但是存在一些未知错误,但是您可以采用这种方法。 只需从amazon/dynamodb-local创建一个新的Docker映像作为基础映像。 构建。

docker build -t mydb .

并运行

docker run -it --rm -p 8001:8001 mydb

下面是Dockerfile

FROM amazon/dynamodb-local
WORKDIR /home/dynamodblocal
ENTRYPOINT ["java", "-jar", "DynamoDBLocal.jar", "-port", "8003"]

您将看到端口。

enter image description here

答案 1 :(得分:1)

您不需要重建图像。

docker inspect amazon/dynamodb-local

显示入口点设置为

  "Entrypoint": [
   "java"
 ],

因此,运行以下命令会出现错误:

 $ docker run -p 8001:8001 amazon/dynamodb-local -port 8001
 Unrecognized option: -port
 Error: Could not create the Java Virtual Machine.
 Error: A fatal exception has occurred. Program will exit.

因为我们试图将 -port 参数传递给 java ,但是我们需要将其传递给 DynamoDBLocal.jar

一旦我们知道了,就可以将jar添加到docker run中,并且可以进行以下工作:

$ docker run -p 8001:8001 amazon/dynamodb-local -jar DynamoDBLocal.jar -port 8001

Initializing DynamoDB Local with the following configuration:
Port:   8001
InMemory:       false
DbPath: null
SharedDb:       false
shouldDelayTransientStatuses:   false
CorsParams:     *

我会把它作为一个错误提出,但是https://hub.docker.com/r/amazon/dynamodb-local/并没有提到一个公开的github仓库来提出这个问题。

答案 2 :(得分:0)

出于某种原因,docker-compose 没有将端口映射到 dynamodb 的主机。下一个配置不适用于 dynamodb-local 图像:

    ports:
    - "9000:8000"

解决方法是将端口直接放到命令中, -port 9000 与 docker-compose 中的 ports: - "9000:9000" 相同。

version: "3.8"

services:
  service-dynamodb:
    image: amazon/dynamodb-local
    image: "amazon/dynamodb-local:latest"
    working_dir: /home/dynamodblocal
    # -port {number} is the same as 
    # ports: - {number}:{number} in Docker
    command: "-jar DynamoDBLocal.jar -port 9000 -sharedDb -optimizeDbBeforeStartup -dbPath ./data"
    volumes:
      - ./data:/home/dynamodblocal/data