我一直在尝试并失败,以使Percona Server(CentOS上的版本8)在docker-compose.yml文件中作为单独的服务运行。不断出现的错误是:
mysql | 2020-03-16T23:04:25.189164Z 0 [ERROR] [MY-010270] [Server] Can't start server : Bind on unix socket: File name too long
mysql | 2020-03-16T23:04:25.189373Z 0 [ERROR] [MY-010258] [Server] Do you already have another mysqld server running on socket: /var/lib/mysql/mysql.sock ?
mysql | 2020-03-16T23:04:25.190581Z 0 [ERROR] [MY-010119] [Server] Aborting
mysql | 2020-03-16T23:04:26.438533Z 0 [System] [MY-010910] [Server] /usr/sbin/mysqld: Shutdown complete (mysqld 8.0.18-9) Percona Server (GPL), Release 9, Revision 53e606f.
我的docker-compose.yml文件如下:
version: '3.7'
services:
mysql:
container_name: mysql
image: percona:8-centos
volumes:
- ./docker/mysql/setup:/docker-entrypoint-initdb.d
- ./docker/mysql/data:/var/lib/mysql
- ./docker/mysql/conf:/etc/mysql/conf.d:ro
environment:
- MYSQL_ROOT_PASSWORD=mypassword
- MYSQL_DATABASE=<redacted>
- MYSQL_USER=<redacted>
- MYSQL_PASSWORD=<redacted>
stop_grace_period: 20s
restart: always
一些注意事项:
docker/mysql/conf/
下的主机上,将套接字文件的位置声明为/var/run/mysql.sock
,而不是/var/lib/mysql/mysql.sock
。为什么mysqld仍会尝试使用与我在自己的配置文件中声明的套接字文件路径不同的套接字文件路径? (是的,正在拾取我的配置文件,因为它过去曾经在其中声明过时的选项时,mysqld抱怨并且无法启动。)/etc/my.cnf.d
,然后在给出示例时,他们却提到了/etc/mysql/conf.d
;差异使我对整个文档的其余部分失去了信心。确实,我的自信不足之处似乎已经到位,因为官方形象无法正常使用。所以,有人知道如何使用官方的Percona映像吗?(还是我将被迫使用自己的Dockerfile来滚动我自己的服务?)
我在Mac OS上也遇到相同的错误。
因此从错误中得到提示:“文件名太长”,我将整个项目移到主目录中,因此我的撰写文件位于以下路径:〜/ myproject / docker-compose.yml。 (也许您可以尝试移至根目录,以避免与〜/扩展到的目录混淆。)
它成功了,mysql映像又重新启动,没有任何错误。
PS:我并不是说您需要将项目放置在homedir中,但是您需要找到适用于您项目的最小文件夹路径。