在 Docker COPY 中使用正则表达式获取数字

Using regex in Docker COPY for digits

我正在尝试使用以下格式复制 docker 中的文件

database-20.2.1.zip 

我试过使用类似下面的方法,但它似乎不起作用

COPY databse-+([0-9]).+([0-9]).+([0-9]).zip /docker-entrypoint-initdb.d/database.zip

这是否可以在 docker 副本中完成?

Dockerfile COPY uses shell globs, not regular expressions. The actual implementation uses the Go filepath.Match 语法。该语法不允许正则表达式的某些组合:您可以匹配任何单个数字 [0-9] 或任意数量的字符 *,但不能匹配任何数量的数字。

根据您希望对要接受的文件的严格程度以及文件名格式的一致性,以下任何一项都有效:

COPY database-[0-9][0-9].[0-9].[0-9].zip ./database.zip
COPY database-*.*.*.zip ./database.zip
COPY database-*.zip ./database.zip

在所有情况下请注意,该模式可以匹配构建上下文中的多个文件。如果 COPY 的 right-hand 端是单个文件名(不以 / 结尾)但 glob 匹配多个文件,您将收到构建错误。在这种情况下,这可能就是您想要的。