为什么不在docker compose中使用卷而不是副本



我经常将react应用程序作为SSR。此时,我使用docker容器(docker compose(

我写以下内容。(DcookerFile(

# 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有什么好处?

在Dockerfile中复制实际上是将文件复制到给定的路径。想象一下这是在冰上雕刻的。就像一旦你复制了所有东西,除非你重新构建你的图像,否则文件无法从外部修改。其中,因为卷实际上正在创建到主机的装载点。因此,如果你正在进行需要更改代码的开发,并且你使用COPY,每次你想将更改放入容器时,你都必须重新构建映像,而对于卷,你不必重新构建映像。更改将转移到容器中。

在开发过程中使用卷,或者如果您有任何想要持久性的东西,比如数据库等等。如果不卷装入数据库,则每当重新启动时,容器数据都将丢失。

当您准备好发送应用程序并且确信不再修改源代码时,请使用COPY。

如需进一步阅读,请查看以下内容:Docker ADD vs COPY vs VOLUME

我希望这能回答你的问题。

最新更新