的区别是什么?和./在运行中

时间:2019-04-01 16:04:00

标签: docker dockerfile

我有如下这样的vue dockerfile最佳实践:

FROM node:lts-alpine as build-stage
WORKDIR /app
COPY package*.json ./
RUN npm install
COPY . .
RUN npm run build

我想知道第一个COPY ./和第二个COPY之类的目标有什么不同。 ?

1 个答案:

答案 0 :(得分:3)

如果有多个源,则必须使用./格式,该格式明确指定目标是一个文件夹,所有源均复制到该文件夹​​中。因此,COPY a b ./将使./a./b进入容器。

当您有单个来源,例如COPY . .时,此命令会合并源文件夹内容到目标文件夹或替换文件(如果源是文件)。

最佳示例显示。假设您有:

a/
  a.txt
b/
  b.txt
Dockerfile
hello.txt

Dockerfile

COPY hello.txt ./hello1    # will create/replace ./hello1 FILE in container
COPY hello.txt ./hello2/  # will create ./hello2/hello.txt 
COPY a .     # now you have ./a.txt in container
COPY b .     # now you have ./a.txt and ./b.txt in container   

最后,您进入了容器:

hello1
hello2/hello.txt
a.txt
b.txt