docker 容器:将符号链接添加到 /var/www 中的 /Users/www/[project] 以访问和提供本地文件

docker container: add symlink to /Users/www/[project] in /var/www to access and serve local files

我正在尝试通过 Lucee docker 容器 (https://hub.docker.com/r/lucee/lucee5/) 在我的 mac 上提供本地 CFML 文件。 我什至将 mac 上的特定文件夹挂载到 docker 图像中的符号链接 docker run -it imagename -v /Users/[username]/www/projectx:/code /bin/bash 所以在 docker 图像中的 bash 上,我现在有 /code。 然后我在 /var/www.

中创建一个符号链接 ln -s /code projectx

当我提供图像时 运行ning tomcat 同时安装文件夹

docker run -p 1337:8888 -v /Users/[username]/www/projectx:/code [imagename] catalina.sh run

我希望能够访问 http://localhost:1337/projectx 不幸的是它找不到那个文件夹。可能是因为 Lucee 在 运行 时间没有识别或索引文件?

这可能吗?

我看到的结果是在我的 MAC 上开发我的 Coldfusion 应用程序,而在我的 docker 容器上 运行ning Lucee+mysql 并在本地拥有源代码这样我就不必使用 samba 共享或其他方式来编辑我 IDE 中的 coldfusion 文件。 (当我升级到 Sierra 时,Samba 共享停止工作)

您是否考虑过将代码目录简单地挂载到 /var/www,这是 Lucee Docker 映像中的默认 VOLUME 挂载点?如果您真的希望它位于 /code 子目录中,请在您的主机上拥有该子目录,而不是使用符号链接。

一个简单的方法是使用 docker-compose,例如下面的 docker-compose.yml

version: '2'

services:
  web:
    image: lucee/lucee5
    ports:
      - "1337:8888"
    volumes:
      - /Users/[username]/www/projectx:/var/www

然后您可以 运行 使用 docker-compose up

除非需要在容器的生命周期内更改 /code 的内容,否则您可以在容器构建期间复制或添加它。 如果不是,正如 Simon 上面所建议的那样,将卷直接安装在您想要使用它的地方更有意义。如果您不希望容器更改卷中的任何内容,请将其设置为 RO。