我正在最新的官方MySQL docker容器中运行MySQL。主机是Windows10。
我正在使用“Docker-Compose up MySQL”启动以下服务:
version: '3.4'
services:
mysql:
image: mysql/mysql-server:latest
container_name: sqlstore
ports:
- '3306:3306'
expose:
- '3306'
env_file:
- ./sqlconfig.env
volumes:
- ./data:/var/lib/mysql
我遇到的问题是,当MySQL数据库文件驻留在主机的卷上时,MySQL无法运行,并且我不断收到以下错误消息:“是否您已经有另一个mysqld服务器在套接字上运行:”/var/lib/MySQL/MySQL.sock“”
值得注意的是,我确实确保了该端口没有被其他进程使用,MySQL的文件确实被写入主机上的./data目录。
但是,当MySQL文件不驻留在主机上而是驻留在docker本身内时,一切都能正常运行。
我也有同样的问题。如果您使用的是Linux容器,那么这个问题很可能与MySQL容器和Windows主机的文件系统类型不同有关。使用命名卷,即some-data:/var/lib/mysql
可能会解决这个问题。工作示例:
version: '3.4'
services:
mysql:
image: mysql/mysql-server:latest
container_name: sqlstore
ports:
- '3306:3306'
expose:
- '3306'
env_file:
- ./sqlconfig.env
volumes:
- datavol:/var/lib/mysql
volumes:
datavol: