在 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 匹配多个文件,您将收到构建错误。在这种情况下,这可能就是您想要的。
我正在尝试使用以下格式复制 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 匹配多个文件,您将收到构建错误。在这种情况下,这可能就是您想要的。