gpt4 book ai didi

linux - 如何将文件从 Docker 容器同步回其主机?

转载 作者:可可西里 更新时间:2023-11-01 09:33:07 25 4
gpt4 key购买 nike

也许我把这个复杂化了。

我的目标是在 Windows 上为 Node.js 应用程序开发创建一个基于 Docker 的工作流程。

  1. 在开发期间,我能够在容器内本地运行我的应用程序,并且仍然可以毫不费力地查看最新版本(我不想每次都重建镜像以查看最新版本)。

  2. 另一方面,当我部署到生产环境时,我希望将我的源文件与所有依赖项 ( npm install ) 一起“烘焙”到容器镜像中

所以我创建了两个 Vagrantfiles - 一个用于容器,一个用于它的主机。这是后者的摘录:

Vagrant.configure(2) do |config|
config.vm.provider "docker" do |docker|
docker.vagrant_vagrantfile = "host/Vagrantfile" # it references the host Vagrantfile
docker.build_dir = "." # we have a Dockerfile in the same dir
docker.create_args = ['--volume="/usr/src/host:/usr/src/appcontainer:rw"']
end
end

/usr/src/host是一个包含我所有源代码的目录(没有 node_modules )。在 Dockerfile 的构建过程中, Docker 复制 package.json/usr/src/appcontainer并发出 npm install这对我的第二个要求很好(部署到生产环境)

但我的第一个要求是在开发过程中更改源,所以我挂载了/usr/src/appcontainer作为指向主机目录的卷 /usr/src/host .但是,这不起作用,因为 /usr/src/host没有 node_modules文件夹 - 此文件夹仅存在于容器中。

整个问题似乎很简单 - 在 Windows 下更改文件,在 Linux 主机 VM 和容器中查看它的更改,反之亦然...但我有点卡住了。

实现这种同步行为的最佳做法是什么?

最佳答案

However, this is not working, because /usr/src/host doesn't have a node_modules folder

您可以使用 this question 中描述的方法之一。 ,例如通过使用专用于 node_modules 的数据卷。
或者将主机 node_modules 安装为容器中的单独文件夹。

关于linux - 如何将文件从 Docker 容器同步回其主机?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36321966/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com