更改 amazon/dynamodb-local 端口
Change amazon/dynamodb-local Port
如何通过 Amazon Docker 图像更改 dynamodb 启动的端口?
根据这个,执行dynamodb java文件时可以使用-port
选项。
但是,当使用此命令 运行 连接 docker 图像时: docker run -p 8000:8000 amazon/dynamodb-local
我没有指定 dynamodb 监听的端口的选项,只有我之间连接的端口主机和容器。
我是否必须制作自己的 Docker 文件,指定 OS 并安装 dynamodb 等等,这样我就可以 运行 java 命令并指定我的端口?
我尝试使用官方镜像来覆盖入口点,但出现了一些未知错误,但您可以采用这种方法。
只需从 amazon/dynamodb-local
创建一个新的 Docker 图像作为基础图像。
建造.
docker build -t mydb .
和运行它
docker run -it --rm -p 8001:8001 mydb
下面是Docker文件
FROM amazon/dynamodb-local
WORKDIR /home/dynamodblocal
ENTRYPOINT ["java", "-jar", "DynamoDBLocal.jar", "-port", "8003"]
正如您将看到的端口。
您不需要重建图像。做
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 运行 和以下工作:
$ 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/ 没有提到 public github 回购来提出这个问题。
出于某种原因 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
如何通过 Amazon Docker 图像更改 dynamodb 启动的端口?
根据这个-port
选项。
但是,当使用此命令 运行 连接 docker 图像时: docker run -p 8000:8000 amazon/dynamodb-local
我没有指定 dynamodb 监听的端口的选项,只有我之间连接的端口主机和容器。
我是否必须制作自己的 Docker 文件,指定 OS 并安装 dynamodb 等等,这样我就可以 运行 java 命令并指定我的端口?
我尝试使用官方镜像来覆盖入口点,但出现了一些未知错误,但您可以采用这种方法。
只需从 amazon/dynamodb-local
创建一个新的 Docker 图像作为基础图像。
建造.
docker build -t mydb .
和运行它
docker run -it --rm -p 8001:8001 mydb
下面是Docker文件
FROM amazon/dynamodb-local
WORKDIR /home/dynamodblocal
ENTRYPOINT ["java", "-jar", "DynamoDBLocal.jar", "-port", "8003"]
正如您将看到的端口。
您不需要重建图像。做
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 运行 和以下工作:
$ 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/ 没有提到 public github 回购来提出这个问题。
出于某种原因 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