我正在使用带有 docker-compose 的 MySQL docker 容器,效果很好。
唯一的问题是我收到错误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
EDIT:这是一个启动日志的粘贴箱:https://pastebin.com/aJiKJ4aE https://pastebin.com/aJiKJ4aE
我相信你正在经历这个问题 https://github.com/docker/for-win/issues/584。有几个可能的解决方案,但我自己没有尝试过,因为我在 Windows 上没有 Docker:
-
解决方案 1(谢恩) https://github.com/docker/for-win/issues/584#issuecomment-394056400
Remove 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重新启动时停止的容器。
-
evolart 的解决方案 2 https://github.com/docker/for-win/issues/584#issuecomment-474144098
创建以下 Powershell 脚本(将位置调整为 docker-compose.yml 所在的位置):
Do {
$dockerps = (docker ps)
Start-Sleep -S 5
} While (! $dockerps -contains "mysql")
Set-Location D:\Docker\MySQL
docker-compose restart
Then:
使用“启动程序”操作添加任务计划程序任务以运行脚本。
程序/脚本:powershell.exe
添加参数:-windowstyle hide -file D:\Docker\MySQL-Restart.ps1
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)