通过 docker 运行 memSQL 时更改 memSQL 默认聚合器端口

Changing memSQL default aggregator port when running memSQL via docker

我正在尝试通过 docker 容器使用 MemSQL。
下面是我的 Docker-compose.yml memsql docker

条目
memsql:
image: memsql/quickstart
volumes:
  - "./jenkins/jenkins_memsql_schema.sql:/schema.sql"
ports:
  - "3307:3306"
  - "9000:9000"
hostname: memsql
container_name: memsql

memsql 运行的默认端口是 3306。我想更改此默认端口。
当我举起这个容器并尝试从容器内更改端口时。
我使用以下命令:

memsql-ops memsql-update-config --key=port --value=3307

我收到以下错误:

You cannot change the port variable for an existing MemSQL node.

所以:

  1. 好像memSQL是运行之后就不能改端口了,那之前怎么改呢?
  2. 如何通过 docker-compose 设置来设置?

1.貌似memSQL是运行ning后就不能改端口了,那之前怎么改呢?

我建议您从 here 开始,这意味着您可以从修改调用 setup.sh 的安装脚本开始,然后修改 Dockerfile 以公开所需的端口而不是 3306,这将使启动容器时,您可以拥有正确的端口

2。如何通过 docker-compose 设置来设置?

如果只需要更改为 运行 这个命令或额外的简单步骤:

memsql-ops memsql-update-config --key=port --value=3307

您可以使用 environment 键通过 docker-compose.yml 将端口作为环境变量传递,并将上述命令添加到名为 memsql-entrypoint.sh 的脚本中像这样:

if [ ! -z "$CUSTOM_PORT" ]; then
    memsql-ops memsql-update-config --key=port --value=$CUSTOM_PORT
fi

In both cases you will need a customized Dockerfile and use memsql/quickstart as a base image.

在 Docker 中的 MemSQL 运行 上下文中,最简单的方法是将 MemSQL 运行 保留在 docker 容器内的端口 3306 上,但有一个不同的主机端口映射到该端口。

在非Docker 安装中,您可以在安装过程中选择用于安装 MemSQL 的端口(https://docs.memsql.com/memsql-tools-reference/latest/create-node/ 的 --port 选项)。也可以通过删除并重新添加所需的端口来更改节点的端口 - memsql-update-config 不能用于此。