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

标签 linux node.js windows docker vagrant

也许我把这个复杂化了。

我的目标是在 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/

相关文章:

linux - 如何在 GoDaddy 的网络托管服务上提供没有扩展名的文件?

linux - 如何在 linux 上使用 libnl3(netlink 版本 3)获取接口(interface)的 ipv4 地址?

linux - anacron 不执行我的 bash 脚本

sql-server - 使用适用于 node.js 的 mssql 连接到 SQL Server

node.js - dokku 部署上的 Upstart Node.js 应用程序( digital ocean )

iphone - 最好的 windows iphone 应用程序开发替代方案

linux - 使用socks代理进行ssh

javascript - 忽略 SailsJS 中 1 个特定模型的默认模型属性

c++ - 将 MinGw 编译器集成到 Dev C++ 中

c++ - 释放从 char* 创建的 _bstr_t