Docker 纱线工作区和码头工人

Docker 纱线工作区和码头工人,docker,yarn-workspaces,Docker,Yarn Workspaces,我试图使用Thread工作区,然后将我的应用程序放入Docker 形象 文件夹结构如下所示: 根 Dockerfile 节点单元/ libA-->../libA 利巴/ 应用程序/ 不幸的是,Docker不支持符号链接,因此无法将根目录中的node_modules-folder复制到Docker映像中,即使Docker文件像我的情况一样位于根目录中 我可以做的一件事是排除带有.dockrignore的符号链接,然后将实际目录复制到映像中 另一个想法——我更喜欢——是使用一

我试图使用Thread工作区,然后将我的应用程序放入Docker 形象

文件夹结构如下所示:

    • Dockerfile
    • 节点单元/
      • libA-->../libA
    • 利巴/
    • 应用程序/
不幸的是,Docker不支持符号链接,因此无法将根目录中的node_modules-folder复制到Docker映像中,即使Docker文件像我的情况一样位于根目录中

我可以做的一件事是排除带有.dockrignore的符号链接,然后将实际目录复制到映像中

另一个想法——我更喜欢——是使用一个工具,用符号链接的实际内容替换符号链接。你知道有没有这样的工具(最好是Javascript包)


感谢

Thread用于依赖项管理,应配置为在Docker容器中运行以安装必要的依赖项,而不是从本地计算机复制它们

Docker的主要好处是,它允许您重新创建开发环境,而不必担心运行它的机器-同样的事情也适用于Thread,通过运行
Thread install
,它为您的Docker映像所基于的机器的相关架构安装正确的版本

配置工作目录后,在Dockerfile中包括以下内容:

RUN yarn install
那你应该被分类了

您应该做的另一件事是在.gitignore.dockrignore文件中包含节点模块目录,这样在分发代码时就不会包含它


TL;DR:不要从本地计算机复制节点模块目录,在Dockerfile中包含
运行纱线安装
,您是否应该使用
纱线安装
在Docker容器环境中安装节点模块,而不是从您的开发环境中复制它们?这可以在你的Dockerfile中设置。哦,对了,我没想到会有这种可能性。谢谢!酷!如果你需要进一步的帮助,我可以把它作为一个答案,否则我相信你会对上面的内容进行一些研究。我用你的答案得到了它:-)我猜libA已经发布到npmjs存储库了。如果您不想发布libA怎么办?但是
spirn.lock
在根目录中,而不是在子项目中,因此我们可以获得对依赖项的意外升级,这将导致各种混乱(当前问题我正在尝试修复)。使用Docker构建上下文,您可以从根目录为子项目运行Docker构建。然后,您可以拉入所需的任何文件(如
warn.lock
)。@ChrisKemp您找到解决此问题的方法了吗?没有。我选择不共享公共节点模块,并让每个子项目管理自己的。