我有一个最奇怪的问题,我似乎无法深究。
我有一个可在docker中运行的Coldfusion应用程序,使用卷挂载时绝对可以:
volumes:
- .:/opt/coldfusion2016/cfusion/wwwroot/app
但是,如果我不使用卷挂载,而是将文件复制到其中(以生成构件:
COPY . /opt/coldfusion2016/cfusion/wwwroot/app
我得到这些错误:
app_1 | Jun 19, 2018 18:53:06 PM Error [http-nio-8500-exec-1] - Variable ISLOGGEDIN is undefined. The specific sequence of files included
起初,我想也许docker副本会省略一些文件,所以我删除了.dockerignore
。不是那样的。
然后我运行了工作的(挂载的)和不工作的(复制的)容器,并生成了/opt/coldfusion2016/cfusion/wwwroot/app
中所有文件(包括权限和所有权)的全面差异,并且没有没有任何东西完全不同。
因此,我开始怀疑这与主机(MacOSX)以及文件的挂载方式有关。随后,我尝试在Linux机器上复制此文件,并且卷装载没有工作,因此将情况的范围缩小到了MacOSX。
我抓挠头,然后添加了一个脚本,该脚本将LF
之后的行尾递归设置为COPY
(macosx / linux)。没什么区别。只是为了大声笑,我尝试了其他各种行尾,但都没有用。
我尝试将代码直接克隆到容器中,但这也不起作用,我尝试了ADD而不是COPY,不是。
然后我尝试使用gnu-tar在macosx上压缩我的主机文件夹,将其复制并解压缩,这也不起作用。
所以现在我已经尝试了所有我能想到的,并且会喜欢更多的想法。
有关卷挂载的事情实际上使这项工作成功!
PS容器为CENTOS