我在Windows Home上使用docker-toolbox。我能够运行jekyll-serv Web服务器图像来查看浏览器上的默认页面,但是当我尝试在VS Code上编辑文件时,刷新浏览器后看不到更改。
知道为什么刷新后看不到更改吗?
首先,我将git将此存储库克隆到了我的库中c:/Users/shaharshokrani/udemy-docker- mastery/bind-mount-sample1(可以ls在“ cmder”控制台上查看文件)。
c:/Users/shaharshokrani/udemy-docker- mastery/bind-mount-sample1
ls
然后,我可以使用以下命令运行该图像:
docker run -v //c/users/shaharshokrani/udemy-docker-mastery/bindmount- sample-1:/site bretfisher/jekyll new .
docker container run -p 80:4000 --name myjekyll -v //c/users/shaharshokrani/udemy-docker-mastery/bindmount-sample-1:/site bretfisher/jekyll-serve
而且我可以在上看到默认的欢迎页面http://192.168.99.100/。
http://192.168.99.100/
我尝试使用VS Code编辑和保存此文件,2017-03-05-welcome-to-jekyll.markdown但刷新浏览器后看不到更改。
2017-03-05-welcome-to-jekyll.markdown
我还检查了VM的共享网络-它显示c:/users/。
c:/users/
即使Mounts在检查中看起来也不错:
Mounts
"Mounts": [ { "Type": "bind", "Source": "/c/users/shaharshokrani/udemy-docker-mastery/bindmount-sample-1", "Destination": "/site", "Mode": "", "RW": true, "Propagation": "rprivate" } ],
和图像dockerfile的CMD具有--force_polling标志。
CMD
--force_polling
图像(bretfisher/jekyll-serve,bretfisher/jekyll)均为最新图像。
bretfisher/jekyll-serve
bretfisher/jekyll
在docker container logs -f myjekyll看起来不错:
docker container logs -f myjekyll
Bundle complete! 4 Gemfile dependencies, 28 gems now installed. Bundled gems are installed into `/usr/local/bundle` Configuration file: /site/_config.yml Source: /site Destination: /site/_site Incremental build: disabled. Enable with --incremental Generating... Jekyll Feed: Generating feed for posts done in 1.031 seconds. Auto-regeneration: enabled for '/site' Server address: http://0.0.0.0:4000/ Server running... press ctrl-c to stop.
Docker版本:
Client: Version: 18.03.0-ce API version: 1.37 Go version: go1.9.4 Git commit: 0520e24302 Built: Fri Mar 23 08:31:36 2018 OS/Arch: windows/amd64 Experimental: false Orchestrator: swarm Server: Docker Engine - Community Engine: Version: 19.03.3 API version: 1.40 (minimum version 1.12) Go version: go1.12.10 Git commit: a872fc2f86 Built: Tue Oct 8 01:01:20 2019 OS/Arch: linux/amd64 Experimental: false containerd: Version: v1.2.10 GitCommit: b34a5c8af56e510852c35414db4c1f4fa6172339 runc: Version: 1.0.0-rc8+dev GitCommit: 3e425f80a8c931f88e6d94a8c831b9d5aa481657 docker-init: Version: 0.18.0 GitCommit: fec3683
绑定安装实际上不适用于docker toolbox:
Docker for Windows不会将主机的已安装文件夹中的文件更改事件传播到容器
该脚本旨在解决此问题:docker-windows-volume-watcher。
这是在容器外部操作数据的常见问题。
特别是对于jekyll,即使是以下问题中描述的解决方案也不适用于基于Windows的系统。
https://github.com/jekyll/jekyll- watch/issues/17
简而言之,您需要使用--force_polling标志执行jekyll ( 不适用于Windows Hosts )。您可以在jekyll文档中找到它
https://jekyllrb.com/docs/configuration/options/
在基于Linux的系统上,它可以直接使用,因为问题中bretfisher/jekyll- serve使用的映像已经利用了该--force_polling标志。
bretfisher/jekyll- serve
刚跑
docker run --rm -it -e JEKYLL_NEW=true -p 8080:4000 -v (pwd):/site bretfisher/jekyll new .
创建一个新的jekyll网站,并
docker run --rm -it -e JEKYLL_NEW=true -p 8080:4000 -v (pwd):/site bretfisher/jekyll-serve
可以将其安装到我的计算机(linux)上的目录中,并能够使用传播到jekyll的更改来编辑文件。