docker容器:在/ var / www的/ Users / www / 中添加符号链接来访问和提供本地文件

我正尝试通过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因此,在bash中docker图像我现在有/代码。 然后我在/var/www创build一个符号链接ln -s /code projectx

当我然后提供运行tomcat的图像,同时也安装该文件夹

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

我希望能够访问http://localhost:1337/projectx不幸的是,它无法find该文件夹​​。 可能是因为Lucee在运行时不识别或索引这些文件?

这可能吗?

我看到的结果是在我的MAC上开发我的Coldfusion应用程序,同时在我的Docker容器上运行Lucee + mysql,并在本地拥有源代码,这样我就不必使用samba共享或其他方式来编辑Coldfusion文件在我的IDE。 (当我升级到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的内容,否则只能在容器构build期间COPY或ADD。 如果没有,就像西蒙build议的那样,直接在你想使用它的地方安装音量更有意义。 如果你不希望容器改变容量中的任何东西,则使其成为RO。