val*_*lya 5 git shared-access docker
假设我想将 Docker 用于一个应用程序,它由两部分组成。这些部分不同,但它们有一些共享库。
所以,我有两个文件夹:
part1/
Dockerfile
src/
part2/
Dockerfile
src/
Run Code Online (Sandbox Code Playgroud)
但是,我希望他们共享一些文件(例如,库),因为 DRY。不幸的是,似乎没有任何好的目录结构可以让我这样做:Dockerfiles 不能引用父文件夹,我不能将它们都放在顶层文件夹中,因为我不允许更改Dockerfile 的名称。
有些文件需要在建筑物一步,所以我不能使用的“绑定安装卷”选项docker run-docker run为时已晚。
我看到这些选项,但我不喜欢它们:
我可以添加一个名为 的文件夹shared/,然后使用 hack 将其“放入”我的两个应用程序文件夹中。这些黑客包括以某种方式安装它(这很烦人,需要我每次都这样做,而且我试图出售 Docker 的同事无法解释)或在构建之前复制它(如果我将构建隐藏到构建中,则可行) -script,在构建之前复制文件夹并在构建之后立即删除它;但是,即使共享文件夹没有更改,它也会使构建缓存无效,并且容易出现错误)
我可以将项目拆分为 3 个不同的项目,并使用 git-sub-something 将它们链接在一起。这种配置很难使用(或者我不知道该怎么做)。
我认为我的情况并不少见,尤其是在座右铭“将应用程序解耦到多个容器中”的情况下。所以可能有很好的方法来处理它。有什么线索吗?
小智 0
我知道有点晚了,但由于同样的问题而感到困惑,我最终编写了自己的框架来生成Dockerfiles。
它叫做沙子,你可以在这里找到它
\n它允许您在 s 之间共享代码Sandfile,这些代码稍后会被转换为Dockerfiles
给定以下目录结构:
\nmy-monorepo/\n\xe2\x94\x82\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 tweet-service/\n| \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 src/\n| \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 ...\n\xe2\x94\x82 \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 Sandfile\n\xe2\x94\x82\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 home-timeline/\n| \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 src/\n| \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 ...\n\xe2\x94\x82 \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 Sandfile\n\xe2\x94\x82\n\xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 Sandfile\nRun Code Online (Sandbox Code Playgroud)\n你可以Sandfile这样写你的 s :
my-monorepo/\n\xe2\x94\x82\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 tweet-service/\n| \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 src/\n| \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 ...\n\xe2\x94\x82 \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 Sandfile\n\xe2\x94\x82\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 home-timeline/\n| \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 src/\n| \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 ...\n\xe2\x94\x82 \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 Sandfile\n\xe2\x94\x82\n\xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 Sandfile\nRun Code Online (Sandbox Code Playgroud)\n# ./my-monorepo/Sandfile\nfrom sand import *\n\ndef MyService(name):\n From("ubuntu", "20.04")\n Run("apt-get install python3")\n Copy(Src="src", Dst="/app")\n Entrypoint(f"python3 /app/{name}.py")\n\nSand("tweet-service")\nSand("home-timeline")\nRun Code Online (Sandbox Code Playgroud)\n# ./my-monorepo/tweet-service/Sandfile\nfrom sand import *\n\nMyService("tweet-service") # Defined in ../Sandfile\nRun Code Online (Sandbox Code Playgroud)\n
| 归档时间: |
|
| 查看次数: |
155 次 |
| 最近记录: |