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

通过docker运行memSQL时更改memSQL默认聚合器端口,docker,docker-compose,port,singlestore,Docker,Docker Compose,Port,Singlestore,我试图通过docker容器使用MemSQL下面是memsql Docker的my 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运行的默认端

我试图通过docker容器使用MemSQL
下面是memsql Docker的my 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.
因此:

  • memSQL运行后,您似乎无法更改端口,那么您以前如何更改端口
  • 如何通过docker compose设置进行设置

  • 1。memSQL运行后,您似乎无法更改端口,因此之前如何更改端口?

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

    2。如何通过docker compose设置进行设置?

    如果只需运行此命令或额外的简单步骤即可进行更改:

    memsql-ops memsql-update-config --key=port --value=3307
    
    您可以使用key通过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
    作为基本映像


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


    在非Docker安装中,您可以在安装过程中选择要安装MemSQL的端口(--port选项)。也可以通过删除并使用所需端口重新添加节点的端口来更改节点的端口-memsql update config无法用于此操作。

    问题在于,docker-to-docker通信发生在内部docker网络中。所以这些请求不会通过“主机”机器,也不会通过我想要的端口。因为在这个内部网络中,memSQL和mySQL都在3306上运行,所以存在冲突。这就是为什么我需要更改memSQL。“你知道怎么做吗?”她继续回答。在此处复制:setup.sh文件具有
    memsql ops memsql deploy--role master--developer edition$deploy\u EXTRA\u标志
    memsql ops memsql deploy--role leaf--developer edition--port 3307$deploy\u EXTRA\u标志
    您可以在那里更改端口—例如,将--port 4567添加到deploy master命令。