我正在使用 docker 运行一个简单的静态 web 项目,使用 nginx 官方图像。作为一个 bower 依赖,我有一个属于我的 ui 库,并在我的两个项目之间共享。为了方便开发过程,我在本地机器上创建了一个卷,以通过 nginx 容器内的/html 文件夹提供本地文件。这种方式工作得很好。
但是,如果我尝试使用 bower 链接在我的 ui lib 的本地副本和 bower 依赖项之间创建链接,则 nginx Web 服务器无法找到该文件夹,因为该链接指向我的本地计算机。
我在 Mac 上运行 docker vm。
是否有人经历过类似的事情并知道如何解决它?
谢谢,
最佳答案
我刚刚遇到了这个问题,并找到了一种很好地解决它的方法。
问题是,当您将整个/html 文件夹作为卷挂载时,bower 链接创建的符号链接(symbolic link)会被复制到您的容器中,而不是它们指向的实际文件夹中。 当 nginx 尝试提供文件时,它遵循符号链接(symbolic link),但现在位于容器内部,其中路由无效。
要解决此问题,请创建另一个直接映射符号链接(symbolic link)的卷。 这样,docker-compose 将在安装到容器之前遵循符号链接(symbolic link),因此复制实际文件夹内容 .这样做的好处是,在您的本地文件系统中,您仍然可以使用文件夹和符号链接(symbolic link),因此您可以像往常一样工作:)
实际例子:
我的文件夹结构
/app
|--/bower_components
|--/packageA
|--/packageB -> symlink to /foo/bar/packageB
我的撰写文件:
version: '2'
services:
nginx:
volumes:
- .:/foo
- ./bower_components/packageB:/foo/bower_components/packageB
...
让我知道它是否有效,干杯!
关于nginx - Docker 和 Bower 链接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37569402/