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