我想将一些文件复制到我的图像中,我想使用ADD命令。我在Docker文档中读到了ADD的正则表达式,但我不知道我可以使用哪种表达式?
我想要这样的东西
FROM registry:5000/ubuntu:14.04
MAINTAINER Me
# some stuffs
ADD Sources/{file1,file2,load_file} /etc/Sources/
# more stuffs
注意:表达式错误,但我这样做是为了向您展示我对ADD命令的期望。 (我是用shell正则表达式思考的。)
那么,我该怎么做?我无法访问链接filepath.Match。如果有人有这些规则,请告诉我?
我正在使用this Docker docs reference
我正在使用这个版本:
Client version: 1.3.0
Client API version: 1.15
Go version (client): go1.3.3
Git commit (client): c78088f
OS/Arch (client): linux/amd64
Server version: 1.3.0
Server API version: 1.15
Go version (server): go1.3.3
Git commit (server): c78088f
答案 0 :(得分:21)
ADD
命令和COPY
都允许Golang filepath.Match
wildcards
您可以在Go的测试代码中找到许多示例:https://golang.org/src/pkg/path/filepath/match_test.go
此处转载的规则适用于无法访问Google / golang.org的中国人:
'*' matches any sequence of non-Separator characters
'?' matches any single non-Separator character
'[' [ '^' ] { character-range } ']'
character class (must be non-empty)
c matches character c (c != '*', '?', '\\', '[')
'\\' c matches character c
character-range:
c matches character c (c != '\\', '-', ']')
'\\' c matches character c
lo '-' hi matches character c for lo <= c <= hi
答案 1 :(得分:4)
通常,您最终会将所有相关文件放入子目录,然后只是ADD
该目录,以将它们带入图像。
答案 2 :(得分:0)
示例如何将带有ext .so的文件添加到目录:
ADD modules/*.so /usr/local/apache2/modules/
或者您可以将所有文件添加到目录中
ADD modules/* /usr/local/apache2/modules/
答案 3 :(得分:0)
请注意,您可以在ADD
中提供一个url
。在url
中,您将不会执行以下操作:
ADD http://myStorage.com/something/*.jar /dir1/dirb