bash - mv 命令在 dockerfile 和我的本地 linux 中的作用方式不同

标签 bash docker ubuntu dockerfile wildfly

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

相关文章:

linux查找文件并创建硬链接(hard link)

linux - 如何在 Docker 中挂载 Hugepages

docker - 为什么 Docker 有守护进程?

matlab - 如何在MATLAB中编写相对路径?

ubuntu - Cronjob 在手动启动时运行,但不是在每次重新启动时运行

macos - 如何在编辑后自动将 "source"~/.bashrc?

bash:从管道分配变量?

Postgresql 和 Vault。错误 : permission denied for relation example

windows - 在 Windows 中使用 grep、sed、awk 进行 Shell

ejabberd - Dockerfile:无法使用添加将本地文件映射到容器