Контейнер MariaDB Docker, использующий объем данных - Ошибка 2002, не удается подключиться через сокет

Хотя стандарт C ++ не имеет такого требования, некоторым компиляторам требуется, чтобы все шаблоны функций и классов были доступны в каждой используемой системе переводов. Фактически для этих компиляторов тела шаблонных функций должны быть доступны в файле заголовка. Повторить: это означает, что эти компиляторы не позволят их определять в файлах без заголовка, таких как .cpp-файлы

Существует ключевое слово export , которое должно смягчать этот проблема, но он нигде не близок к тому, чтобы быть портативным.

1
задан Ben 16 January 2019 в 12:20
поделиться

2 ответа

Вы пробовали монтировать том / var / www / database в ваш docker-compose? Следуя приведенному вами примеру, я должен предложить:

  ...
  mysql:
    image: mysql:5.6.40
    networks:
      - backend
    environment:
      - MYSQL_ROOT_PASSWORD=rootpassword
    volumes:
      - ./your_persistent_db_data_dir:/var/www/databases

Еще одна вещь, которую необходимо учитывать, - это проблема сети. В этом случае я должен попытаться разделить сеть докеров между всеми ними, добавив network_mode: host к каждой услуге, с которой вы хотите пообщаться между ними. помогает вам, пытается установить MariaDB на вашем хосте и смонтировать файл /var/www/databases/mysqld/mysqld.sock в качестве тома. Это не рекомендуется, не очень элегантно и, более того, цель состоит в том, чтобы иметь базу данных в докере с постоянными данными снаружи, я знаю.

0
ответ дан mulg0r 16 January 2019 в 12:20
поделиться

Спасибо всем за ваш совет. В конце концов я нашел некоторую поддержку в этом вопросе.

Хитрость заключалась в том, чтобы смонтировать папку базы данных по умолчанию в качестве внешнего тома:

volumes:
  - databases:/var/lib/mysql

Это в основном работало на лету. Единственным предупреждением было то, что мой файл compose определил корневые учетные данные MySQL. Они были перезаписаны, когда монтировалось, поэтому мне пришлось вручную сбросить пароль root при первом запуске контейнера. На самом деле это должно быть исправлено, поскольку каталог данных теперь является внешним по отношению к тому, поэтому новый образ должен получить тот же пароль root. Должно быть в состоянии записать это изменение в установочные файлы.

0
ответ дан Ben 16 January 2019 в 12:20
поделиться
Другие вопросы по тегам:

Похожие вопросы: