用于Ruby应用程序的Dockerfile-为什么将WORKDIR指定为/ usr / src / app

时间:2019-02-14 08:23:31

标签: ruby docker

查看official Ruby image Docker page-该示例显示设置WORKDIR /usr/src/app

有人知道为什么要使用这个特定路径吗?

就是说可以让我的应用程序处于根目录还是换个说法就可以了?根据文档,我知道它的建议,但是我在创建目录时遇到了一些问题。

只想确保删除它没有问题。我以其他方式测试了我的图片,它可以按预期工作。

谢谢。

2 个答案:

答案 0 :(得分:2)

/usr/src/app没什么特别的。它在标准目录树中,但是没有任何预安装,这对于解释器或容器也不是什么不可思议的。如果我看到WORKDIR /app或另一个目录,我不会眨两次。

  

可以将我的应用程序放在根目录下

有点奇怪。有一些目录具有特殊含义,尽管IME多数Ruby应用程序都没有名为procsyslost+found的子目录,否则它们会发生冲突。 lib目录 很常见,并且那里至少有不寻常的重叠。

设置 some WORKDIR在应用程序Dockerfile中基本上是通用的,没有特别的理由不使用它。问题链接中“如何使用此映像”下的示例Dockerfile实际上非常典型。

答案 1 :(得分:1)

Linux文档项目对/usr/src

进行了说明
  

/ usr是可共享的只读数据。

     

大型软件包不得使用/ usr下的直接子目录   等级

     

“ linux”子目录包含Linux内核源代码,头文件和文档。

我不确定他们为什么使用该目录,它可能不会有害,但是它不一定是Ruby / Rails应用程序的最佳选择。同时,您放置的位置完全不重要,但是您可能确实要遵守一些规则:

  • 避免使用您的~(主目录)文件夹。如果您具有默认情况下安装到home的库,则可能会导致问题,然后尝试安装该目录并覆盖所有内容。另外,您可能最终会在其中找到不需要的工件(.bash_profile,.config /等)
  • 避免使用实际的/(root),因此您不必承担覆盖系统目录的风险

创建一个/app目录是我所见过的最常见的模式。您会在某些CI / CD工具中看到它们将数据放入/app文件夹中,因此这就是我尝试用于Dockerfiles的方式