7

我当前的开发环境允许在更改文件(即nodemon/ webpack)时自动重新加载代码。但是我正在设置一个kubernetes( minikube) 环境,以便我可以一次快速打开 3-4 个相关服务。

一切正常,但目前没有进行自动代码重新加载。docker我尝试安装卷,但与处理文件的方式存在一些冲突virtualbox,因此冲突导致来自主机的文件更改未反映在 docker 容器中。(这不是我拥有的与此问题相关的第一个链接,这只是我在另一天谷歌搜索时发现的第一个)......

无论如何,长话短说,人们在开发中无法完成实时重载。我发现这个问题在整个互联网上都存在,但解决方案很少。到目前为止,我想说的最好的解决方案是这个人使用主机中的 tar来同步文件夹。

但是我想从容器中得到一个解决方案。原因是我想从容器中运行脚本,这样开发人员就不必在每次开始在特定存储库中进行开发时在他的主机上运行一些脚本。

但是,为了做到这一点,我需要从容器运行 rsync 到主机。而且我在弄清楚如何为此编写语法时遇到了很多麻烦。

让我们假设我的应用程序分别存在于我的容器和主机中:

/workspace/app # location in container
/Users/terence/workspace/app  # location in host computer

如何从容器同步到主机?我尝试使用172.17.0.17and127.0.0.1无济于事。不完全确定是否有办法做到这一点?

我试过的例子:

rsync -av 172.17.0.17:Users/terence/workspace/app /workspace/app
rsync -av 127.0.0.1:Users/terence/workspace/app /workspace/app
4

1 回答 1

4

如果您从主机(不在容器内)运行 rsync,则可以docker cp改用:

例如,docker cp containerName:/workspace/app Users/terence/workspace/app

您能否澄清一下:
1.您是从主机还是从容器内部运行 rsync?
如果它来自容器内部,它将很大程度上取决于--network容器所连接的(即桥接或主机)以及已安装的卷(即,当您启动容器时,您是否使用了 -v 标志?)

更新:要让 rsync 在容器中工作,您需要将主机的目录暴露给容器。

当您想到解决方案时,请记住这一点:将主机目录作为数据卷

注意:主机目录本质上是依赖于主机的。出于这个原因,您不能从 Dockerfile 挂载主机目录,VOLUME 指令不支持传递主机目录,因为构建的图像应该是可移植的。主机目录不会在所有潜在主机上都可用。

于 2017-03-26T04:22:13.123 回答