在第一篇文章中,我想分享在我的Windows机器上运行in.relation.to博客的经历。
博客的所有内容都可在GitHub上找到,你可以在本地环境中实际运行整个网站。
Hibernate博客是用awestruct从Asciidoctor文件构建的,而且将所有Ruby gem都准备好绝对不是一件轻松的事情。更糟糕的是,我在Windows机器上运行,所有这些Ruby gem都与Linux库紧密耦合,正如我在尝试了64位Ruby 2.2.4和32位Ruby 1.9.3后多次失败所发现的。
幸运的是,有一个可用的dockerfile,所以构建一个Docker镜像并在专用容器中运行它可以解决Ruby gem地狱。构建Docker镜像没问题,但运行它却是Emmanuel和我两人的一个为期三小时的黑客马拉松。
Docker镜像是不可变的,一旦容器终止,所有更改都会被清除。相反,我们希望GitHub仓库被镜像到Docker容器中,这样即使关闭docker机器,所有更改也会被保留。这个过程可以通过将主机文件夹挂载到Docker容器中来实现,这可以在运行Docker镜像时发生。在我们的情况下,挂载的目录是当前运行Docker容器内镜像的GitHub仓库。
镜像构建完成后,我们需要从GitHub仓库文件夹中运行此命令
docker run -t -i -p 4242:4242 -v `pwd`:/home/dev/in.relation.to hibernate/in.relation.to
这在Windows上不起作用,因为Docker需要将OS路径前缀设置为另一个斜杠。 |
因此,此命令必须更改为
docker run -t -i -p 4242:4242 -v '/'`pwd`:/home/dev/in.relation.to hibernate/in.relation.to
运行后,挂载的文件夹是空的。我们注意到,如果没有GitHub文件夹挂载部分,Docker镜像可以正常运行,所以挂载过程就是问题所在。
经过各种各样的尝试,Emmanuel有了一个主意,检查Virtual Box的共享文件夹,默认情况下,只有C:\Users
目录被共享。难怪它一直不起作用。
所有我的仓库都在D:\
上,我们认为添加一个新的共享路径可以解决这个问题。嗯,它并没有。
Docker 也必须挂载这些 Virtual Box 共享文件夹,但它只对 C:\Users
进行了挂载。有关此行为的详细信息,请参阅 GitHub 问题,如果您对此功能感兴趣,可以关注。
将 GitHub 仓库检查点移动到 /c/Users/Vlad/GitHub/in.relation.to
后,一切运行正常。