gpt4 book ai didi

docker - 如何暴露mysql端口?

转载 作者:行者123 更新时间:2023-12-05 04:35:07 30 4
gpt4 key购买 nike

我正在尝试公开端口 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 并访问容器列表时,我得到:

enter image description here

我还使用 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确实是关闭的。

关于docker - 如何暴露mysql端口?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71099929/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com