为什么在docker-compose中不使用卷而不是复制?

q3qa4bjr  于 2023-10-16  发布在  Docker
关注(0)|答案(1)|浏览(86)

我经常将react应用程序作为SSR。此时,我使用Docker容器(docker-compose)
我写如下:(Dockerfile)

# pull base image
・
・
・
COPY package.json ./
COPY package-lock.json ./

RUN npm install

COPY . ./
CMD ["npm", "start"]

但是,我突然想到我可以在docker-compose中使用volumes prop而不是copy prop。如下所示:(docker-compose.yml)

volumes:
- ./:/usr/src/app

使用copy props而不是volumes props的好处是什么?

xhv8bpkk

xhv8bpkk1#

Dockerfile中的COPY实际上是将文件复制到给定的路径。想象一下这个被刻在冰里。就像一旦你复制了所有东西,除非你重新构建你的图像,否则文件不能从外部修改。因为卷实际上是创建到主机的装载点。因此,如果您正在进行需要更改代码的开发,并且您使用COPY,则每次您希望将更改放入容器中时,都必须重新构建映像,而对于Volume,您不必重新构建映像,更改将被传输到容器。
在开发过程中使用卷,或者如果你有任何你想要持久化的东西,比如数据库等等。如果不卷挂装数据库,则无论何时重新启动容器数据都将丢失。
当您准备好发布应用程序并且确定不再修改源代码时,请使用COPY。
有关进一步的阅读,请参阅:Docker ADD vs COPY vs VOLUME
我希望这能回答你的问题。

相关问题