ThinkChat🤖让你学习和工作更高效,注册即送10W Token,即刻开启你的AI之旅 广告
### COPY 复制文件 格式: - `COPY <源路径>... <目标路径>` - `COPY ["<源路径1>",... "<目标路径>"]` 和 `RUN` 指令一样,也有两种格式,一种类似于命令行,一种类似于函数调用。 `COPY` 指令将从构建上下文目录中 `<源路径>` 的文件/目录复制到新的一层的镜像内的 `<目标路径>` 位置。比如: ``` <pre class="prettyprint"><ol class="linenums"><li class="l"><code class="pcalibre10 pcalibre11 pcalibre9"><span class="pln">COPY </span><span class="kwd">package</span><span class="pun">.</span><span class="pln">json </span><span class="pun">/</span><span class="pln">usr</span><span class="pun">/</span><span class="pln">src</span><span class="pun">/</span><span class="pln">app</span><span class="pun">/</span></code></li></ol> ``` `<源路径>` 可以是多个,甚至可以是通配符,其通配符规则要满足 Go 的 [`filepath.Match`](https://golang.org/pkg/path/filepath/#Match) 规则,如: ``` <pre class="prettyprint"><ol class="linenums"><li class="l"><code class="pcalibre10 pcalibre11 pcalibre9"><span class="pln">COPY hom</span><span class="pun">*</span><span class="pln"> </span><span class="str">/mydir/</span></code></li> <li class="l1"><code class="pcalibre10 pcalibre11 pcalibre9"><span class="pln">COPY hom</span><span class="pun">?.</span><span class="pln">txt </span><span class="pun">/</span><span class="pln">mydir</span><span class="pun">/</span></code></li> </ol> ``` `<目标路径>` 可以是容器内的绝对路径,也可以是相对于工作目录的相对路径(工作目录可以用 `WORKDIR` 指令来指定)。目标路径不需要事先创建,如果目录不存在会在复制文件前先行创建缺失目录。 此外,还需要注意一点,使用 `COPY` 指令,源文件的各种元数据都会保留。比如读、写、执行权限、文件变更时间等。这个特性对于镜像定制很有用。特别是构建相关文件都在使用 Git 进行管理的时候。