如何在Dockerfile的COPY命令中移除源文件名内的版本号?
解决Dockerfile中无需版本号复制Maven构建war包的问题
可行的通配符写法
你尝试的通配符写法完全可行,Docker的COPY指令支持标准文件通配符匹配,直接使用即可实现不受版本号限制的文件复制:
COPY STUDENT_MANAGER/target/STUDENT*/*.war /opt/tomcat/webapps/
这个指令会自动匹配STUDENT_MANAGER/target/目录下所有以STUDENT开头的子目录,并将其中的.war文件复制到Tomcat的webapps目录中,完全摆脱版本号的约束。
额外优化建议
- 构建前置检查:执行
docker build前必须先完成Maven构建(比如运行mvn clean package),确保STUDENT_MANAGER/target/下存在目标子目录和war包,否则Docker会因找不到文件抛出错误。 - 简化匹配逻辑(若适用):如果Maven构建后war包直接存放在
target目录下(而非子目录),且文件名格式为STUDENT-*.war,可以简化指令为:COPY STUDENT_MANAGER/target/STUDENT-*.war /opt/tomcat/webapps/ - 避免多匹配冗余:如果
target目录下存在多个旧版本的STUDENT开头子目录,建议在Maven构建前清理旧目录(比如mvn clean),防止Docker复制冗余的历史war包。
内容的提问来源于stack exchange,提问作者Nainesh Goel
相关产品推荐
相关产品推荐

