我正在查看以下 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/