Win10为知笔记Docker镜像部署 -v /wiz/storage问题解决

Win10为知笔记Docker镜像部署 -v /wiz/storage问题解决

用了很长一段时间的为知笔记,客户端体验还行,服务端笔记同步体验不佳。

准备用Docker自己搭一个服务端。

环境:

  1. 操作系统:64位 Window10 家庭版
  2. VirtualBox虚拟机 + DockerToolBox1.19,MSYS2环境安装的git。

问题1 文件夹映射不成功:

容器运行命令:

docker run -d -p 8080:80 -v /d/wizdata:/wiz/storage wiznote/wizserver

d盘wizdata目录没有同步生成文件。

解决

VirtualBox default虚拟机添加共享文件夹,选择D:\wizdata,确定后重启default虚拟机。

docker-machine ssh default
ls /

可以看到,在default虚拟机根目录有/wizdata目录。

volume映射的源是default虚拟机的路径,所以启动容器的命令应修改为

docker run -d -p 8080:80 -v /wizdata/:/wiz/storage/ -p 9269:9269/udp wiznote/wizserver

问题2 服务启动异常:

运行命令:

docker-machine ssh default
telnet localhost 8080 

提示连接被拒绝,8080端口服务没有启动。

经过一番排查,是mysql数据库在windows文件夹启动时需添加一个参数--innodb-use-native-aio=0

找到wizserver启动入口文件,补充对应内容

 [root@f358043d49de app]# cat -n entrypoint.sh | grep "innodb-use-native-aio=0"
    64      /usr/sbin/mysqld --initialize-insecure --user=root --datadir=/wiz/storage/db --innodb-use-native-aio=0
    86    /usr/sbin/mysqld --user=root --innodb-use-native-aio=0 &

一番折腾(用空文件夹以-v /wizdata/empty_folder:/wiz/app启动参数隐藏原来的文件夹)后,把文件覆盖回去,再commit一下

# containerID 用实际的容器实例ID替换
docker commit -a "somebody" containerID wiz
# 杀掉所有容器实例
docker stop $(docker ps -a -q) && docker rm $(docker ps -a -q)
# 启动修改后的wizserver
docker run -d -p 8080:80 -v /wizdata/:/wiz/storage/ -p 9269:9269/udp wiznote/wizserver

最后,服务正常启动。





posted @ 2022-12-23 22:16  ZinkSor  阅读(446)  评论(0编辑  收藏  举报