我正在查看以下jboss / wildfly docker file,它具有以下命令:

mv $HOME/wildfly-$WILDFLY_VERSION $JBOSS_HOME
其中$WILDFLY_VERSION=17.0.1.Final$JBOSS_HOME=/opt/jboss/wildfly.因此,结果命令转换为:
mv $HOME/wildfly-17.0.1.Final /opt/jboss/wildfly
在文件的后面,我们以如下方式启动wildfly:
CMD ["/opt/jboss/wildfly/bin/standalone.sh", "-b", "0.0.0.0"]
因此,我假设上面的mv命令获取了$HOME/wildfly-17.0.1.Final目录的内容,并将其放在/opt/jboss/wildfly目录中。
但是,如果我在执行mv $HOME/wildfly-17.0.1.Final /opt/jboss/wildfly时尝试从本地计算机(ubuntu 18.04)上的dockerfile重新创建步骤,则最终得到以下目录结构/opt/jboss/wildfly/wildfly-17.0.1.Final。也就是说,wildfly-17.0.1.Final目录本身被复制到/opt/jboss/wildfly中,而不是其内容中。
有人可以解释一下为什么我在本地得到这个结果吗?

最佳答案

$JBOSS_HOME路径不存在。
mv命令实际上是用$HOME/wildfly-17.0.1.Final文件夹替换不存在的目录。话虽如此,$HOME/wildfly-17.0.1.Final/的内容将移动到$JBOSS_HOME中,将文件夹名称从“wildfly-17.0.1.Final”更改为“wildfly”。

简单的例子如下:

创建一个空目录并触摸其中的文件,然后尝试执行以下操作:

mv dir /var/lib/non_existing_folder

dir将原样移动并替换为“non_existing_folder”。

关于bash - mv命令在dockerfile和本地linux中的行为方式的差异,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/57358767/

10-13 03:20