Контейнер MYSQL Docker выдает ошибку «неизвестная база данных» - PullRequest
0 голосов
/ 22 ноября 2018

Я использую Docker-контейнер для MySQL с docker-compose, который работает просто отлично.

Единственная проблема заключается в том, что я получаю ошибку unknown database "database_name" при первом запуске каждый день (после Windowsзапуск)

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

yaml конфигурации:

version: "2.0"
services:
  mysql:
    container_name: mysql
    restart: always
    image: mysql:5.7
    command: --max_allowed_packet=32505856
    ports:
      - "3306:3306"
    volumes:
      - 'C:\data\mysql_db:/var/lib/mysql/'
    environment:
      MYSQL_ALLOW_EMPTY_PASSWORD: "yes"
    networks:
      - shared
networks:
  shared: 
    external:
      name: shared

РЕДАКТИРОВАТЬ : вот вклейка логов запуска: https://pastebin.com/aJiKJ4aE

1 Ответ

0 голосов
/ 02 июня 2019

Я полагаю, вы испытываете эту проблему .Там есть пара возможных решений, но я сам не пробовал их, так как у меня нет Docker в Windows:

  1. Решение 1 от shayne
    Удалить restart:always из вашего контейнера.Вместо этого выполните эту команду один раз, и она создаст контейнер, который запустит ваш контейнер, когда монтирование будет готово:
docker run --name holdup
    --restart always
    -v 'C:\data\mysql_db:/var/lib/mysql/'
    -v //var/run/docker.sock:/var/run/docker.sock
    shaynesweeney/holdup

Это, однако, будет иметь эффект запуска all ваши остановленные контейнеры при перезагрузке.

Решение 2 от evolart
Создайте следующий скрипт Powershell (укажите, где находится ваш docker-compose.yml):
Do {
    $dockerps = (docker ps)
    Start-Sleep -S 5
} While (! $dockerps -contains "mysql")
Set-Location D:\Docker\MySQL
docker-compose restart

Тогда:

Добавление задачи планировщика заданий с действием Запустите программу для запуска сценария.
Программа / скрипт: powershell.exe
Добавьте аргументы: -windowstyle hidden -file D: \ Docker\ MySQL-Restart.ps1

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...