【发布时间】:2018-10-17 22:39:18
【问题描述】:
我是 docker 新手。
我运行了一个 node-10 映像,并在运行的容器中克隆了一个存储库,运行了启动带有文件观察器的服务器的应用程序。我需要访问容器内的代码库,在 Windows 主机上运行的 IDE 中打开它。如果这样做了,那么我还希望当我更改 IDE 中的文件时,这些更改会引发容器中的文件观察器。
感谢任何帮助。谢谢,
【问题讨论】:
标签: node.js docker docker-container
我是 docker 新手。
我运行了一个 node-10 映像,并在运行的容器中克隆了一个存储库,运行了启动带有文件观察器的服务器的应用程序。我需要访问容器内的代码库,在 Windows 主机上运行的 IDE 中打开它。如果这样做了,那么我还希望当我更改 IDE 中的文件时,这些更改会引发容器中的文件观察器。
感谢任何帮助。谢谢,
【问题讨论】:
标签: node.js docker docker-container
您正在寻找的概念称为volumes。您需要启动一个容器并在其中安装一个主机目录。对于容器,它将是一个常规文件夹,并将在其中创建文件。对您来说,它也将是一个常规文件夹。任何一方所做的更改都将对另一方可见。
docker run -v /a/local/dir:/a/dir/in/your/container
请注意,您可能会遇到permission issues,但您需要单独弄清楚。
【讨论】:
这取决于您想对这些文件做什么。
您可以使用docker cp 命令将文件复制到容器或从容器复制文件。
但是,在我看来,您正在使用 docker 进行开发,因此您应该挂载一个卷,也就是说,您在主机上挂载一个目录作为 docker 中的卷,因此写入该目录的任何内容都会显示出来在容器中,反之亦然。
例如,如果您在 Windows 机器上拥有在 C:\src 中开发的代码库,那么您可以像 docker run -v c:\src:/app 一样运行 docker,其中 /app 是节点正在查找的位置。但是,对于 Windows 来说由于 Docker 在 Windows 中不是本机的,因此需要考虑一些事项,因此请先查看 documentation。
【讨论】:
您好,我认为您应该对源代码使用挂载卷,并从您的 IDE 中正常编辑您的代码:
docker run -it -v "$PWD":/app -w /app -u node node:10 yarn dev
这里 docker 将创建一个图像,将工作目录设置为“/app”,将当前目录挂载到“/app”,并在启动时使用“node”用户(无 root 用户)运行“yarn dev”
希望这会有所帮助。
【讨论】: