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

时间:2019-03-17 15:10:49

标签: docker docker-compose port memsql

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

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设置进行设置?

2 个答案:

答案 0 :(得分:1)

在运行于Docker的MemSQL的情况下,最简单的方法是让MemSQL在docker容器内的端口3306上运行,但具有与该端口不同的主机端口映射。

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

答案 1 :(得分:0)

1。似乎一旦memSQL运行,便无法更改端口,那么如何更改它呢?

我建议您从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
  

在两种情况下,您都需要一个自定义的Dockerfile并使用memsql/quickstart作为基础映像。