Запуск сервера Percona в Docker завершается с ошибкой сокета - PullRequest
0 голосов
/ 17 марта 2020

Я пытался (и не смог) запустить 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

Несколько замечаний:

  1. Мой файл my.cnf, который находится на хосте под docker/mysql/conf/, объявляет местоположение файла сокета как /var/run/mysql.sock вместо /var/lib/mysql/mysql.sock. Почему mysqld все еще пытается использовать путь к файлу сокета, отличный от того, который я объявил в своем собственном файле конфигурации? (И да, мой файл конфигурации извлекается, потому что когда раньше он объявил устаревшие параметры, объявленные внутри него, mysqld жаловался и не запускался.)
  2. Вначале я оставил только один путь к файлу сокета и разрешено использовать местоположение по умолчанию; однако это привело к той же самой точной ошибке.
  3. Документация на странице Percona Docker Hub содержит противоречия, одним из важных из которых является то, что они упоминают каталог конфигурации /etc/my.cnf.d внутри контейнера, а затем когда они приводят пример, они вместо этого упоминают /etc/mysql/conf.d; несоответствие заставляет меня терять уверенность во всей остальной документации. В самом деле, мое недоверие теперь кажется вполне уместным, поскольку официальное изображение не может работать должным образом из коробки.

Итак, кто-нибудь знает, как использовать официальные изображения Percona? (Или я буду вынужден развернуть свой собственный сервис, используя свой собственный Dockerfile?)

...