我试图公开端口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的原因。
由于某些原因,当我转到那里并检查端口3310是否打开时,我总是得到关闭的端口。
我怎么才能解决这个问题?
发布于 2022-02-13 11:31:24
如果my.cnf驻留在容器中。那么所使用的端口应该是3306
[client-server]
# Port or socket location where to connect
port = 3306
socket = /run/mysqld/mysqld.sock因为在容器的上下文中,这是公开mysql的端口。
因此,可能发生的情况是公开3306,但是容器为mysql服务器分配了3310。因此,3306确实已关闭。
https://stackoverflow.com/questions/71099929
复制相似问题