Я пытался (и не смог) запустить Percona Server (версия 8 для CentOS) как отдельный сервис внутри файла 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
Несколько замечаний:
- Мой файл my.cnf, который находится на хосте под
docker/mysql/conf/
, объявляет местоположение файла сокета как /var/run/mysql.sock
вместо /var/lib/mysql/mysql.sock
. Почему mysqld все еще пытается использовать путь к файлу сокета, отличный от того, который я объявил в своем собственном файле конфигурации? (И да, мой файл конфигурации извлекается, потому что когда раньше он объявил устаревшие параметры, объявленные внутри него, mysqld жаловался и не запускался.) - Вначале я оставил только один путь к файлу сокета и разрешено использовать местоположение по умолчанию; однако это привело к той же самой точной ошибке.
- Документация на странице Percona Docker Hub содержит противоречия, одним из важных из которых является то, что они упоминают каталог конфигурации
/etc/my.cnf.d
внутри контейнера, а затем когда они приводят пример, они вместо этого упоминают /etc/mysql/conf.d
; несоответствие заставляет меня терять уверенность во всей остальной документации. В самом деле, мое недоверие теперь кажется вполне уместным, поскольку официальное изображение не может работать должным образом из коробки.
Итак, кто-нибудь знает, как использовать официальные изображения Percona? (Или я буду вынужден развернуть свой собственный сервис, используя свой собственный Dockerfile?)