如何暴露mysql端口?
How to expose mysql port?
我正在尝试公开端口 3310
以允许远程 MySQL
连接。到目前为止,我有这个配置:
database:
container_name: sfapi_db
restart: always
ports:
- 3310:3306
build:
context: ./docker/database
environment:
- MYSQL_DATABASE=${DB_NAME}
- MYSQL_USER=${DB_USER}
- MYSQL_PASSWORD=${DB_PWD}
- MYSQL_ROOT_PASSWORD=${DB_PWD_ROOT}
volumes:
- dbdata:/var/lib/mysql
- type: bind
source: ./docker/database/my.cnf
target: /etc/mysql/my.cnf
这是 Dockerfile:
FROM mariadb:latest
CMD ["mysqld"]
EXPOSE 3310
这里是 my.cnf:
[client-server]
# Port or socket location where to connect
port = 3310
socket = /run/mysqld/mysqld.sock
# Import all .cnf files from configuration directory
!includedir /etc/mysql/conf.d/
!includedir /etc/mysql/mariadb.conf.d/
当我 运行 docker-compose up --build -d
访问容器列表时,我得到:
我也使用sudo ufw allow 3310
在服务器上打开了端口。另外,我不能使用端口 3306,因为它被另一个容器使用,这就是我使用 3310 的原因。
出于某种原因,当我去 there 检查端口 3310 是否打开时,我总是发现它是关闭的。
我该如何解决这个问题?
如果 my.cnf
驻留在容器中。那么使用的端口应该是3306
[client-server]
# Port or socket location where to connect
port = 3306
socket = /run/mysqld/mysqld.sock
因为在容器的上下文中,这是暴露的端口 mysql。
所以可能发生的情况是您公开了 3306
但容器已为 mysql 服务器分配了 3310
。所以3306确实是关闭了。
我正在尝试公开端口 3310
以允许远程 MySQL
连接。到目前为止,我有这个配置:
database:
container_name: sfapi_db
restart: always
ports:
- 3310:3306
build:
context: ./docker/database
environment:
- MYSQL_DATABASE=${DB_NAME}
- MYSQL_USER=${DB_USER}
- MYSQL_PASSWORD=${DB_PWD}
- MYSQL_ROOT_PASSWORD=${DB_PWD_ROOT}
volumes:
- dbdata:/var/lib/mysql
- type: bind
source: ./docker/database/my.cnf
target: /etc/mysql/my.cnf
这是 Dockerfile:
FROM mariadb:latest
CMD ["mysqld"]
EXPOSE 3310
这里是 my.cnf:
[client-server]
# Port or socket location where to connect
port = 3310
socket = /run/mysqld/mysqld.sock
# Import all .cnf files from configuration directory
!includedir /etc/mysql/conf.d/
!includedir /etc/mysql/mariadb.conf.d/
当我 运行 docker-compose up --build -d
访问容器列表时,我得到:
我也使用sudo ufw allow 3310
在服务器上打开了端口。另外,我不能使用端口 3306,因为它被另一个容器使用,这就是我使用 3310 的原因。
出于某种原因,当我去 there 检查端口 3310 是否打开时,我总是发现它是关闭的。
我该如何解决这个问题?
如果 my.cnf
驻留在容器中。那么使用的端口应该是3306
[client-server]
# Port or socket location where to connect
port = 3306
socket = /run/mysqld/mysqld.sock
因为在容器的上下文中,这是暴露的端口 mysql。
所以可能发生的情况是您公开了 3306
但容器已为 mysql 服务器分配了 3310
。所以3306确实是关闭了。