Bug #112900 MySQL Router container image does not expose 6450 port for read/write splitting
Submitted: 31 Oct 2023 13:26 Modified: 13 Dec 2023 23:04
Reporter: Takuya Hasegawa Email Updates:
Status: Closed Impact on me:
None 
Category:MySQL Router: Docker Image Severity:S3 (Non-critical)
Version:8.2.0 OS:Any
Assigned to: CPU Architecture:Any

[31 Oct 2023 13:26] Takuya Hasegawa
Description:
We can't use read/write splitting on 8.2.0 and 8.2.0-aarch64 images because the image does not expose the 6450 port.

How to repeat:
$ docker inspect --format="{{json .Config.ExposedPorts }}" container-registry.oracle.com/mysql/community-router:8.2.0

{"6446/tcp":{},"6447/tcp":{},"6448/tcp":{},"6449/tcp":{},"8443/tcp":{}}

Suggested fix:
Add `EXPOSE 6450` in Dockerfile
[31 Oct 2023 16:49] MySQL Verification Team
Thanks for the report
[8 Nov 2023 14:02] Johannes Schlüter
Posted by developer:
 
The fix has been committed.

These ports are exposed:

* 6446 (classic r/w)
* 6447 (classic r/o)
* 6448 (X r/w)
* 6449 (X / ro)
* 6450 (classic rw-splitting, NEW)
* 8443 (https rest API)

As a work-around one can manually expose the port. For example

docker run -e MYSQL_HOST=... -e MYSQL_PORT=3306 -e MYSQL_USER=... -e MYSQL_PASSWORD=....  -p 6450 container-registry.oracle.com/mysql/community-router:8.2.0 

Thanks for the report.
[8 Nov 2023 14:07] Takuya Hasegawa
Will that fix be reflected in the next version? Or will it overwrite existing tags?
[13 Dec 2023 23:04] Daniel So
Posted by developer:
 
Added the following entry to the MySQL Router 8.3.0 changelog: 

"In the Docker image for MySQL Router 8.2.0, port 6450 was not exposed by default, so read-write splitting was not possible without manually exposing the port. That and a number of other ports are now exposed."