我目前正在将我们的 monorepo 迁移到纱线工作区。它包含多个包和服务。服务取决于各自的包package.json。我想将我的服务部署到 Google App Engine,而无需将包发布到私有 npm 注册表。
我设法通过使用自定义运行时并将 和 移动到 monorepo 的根目录来部署单个服务app.yaml,Dockerfile以便能够访问构建上下文中的包和服务。问题是我有多个服务,并且我无法将所有 dockerfile 放在 monorepo 的根目录下,因为它们必须被命名Dockerfile并且我无法更改构建上下文。
我看到两个简单的解决方案:
\n\n第一种方法是在部署之前将相应服务的app.yaml和移动Dockerfile到 monorepo 的根目录。但这看起来很脏,并且会使 CI 代码变得非常复杂。
第二种是在 monorepo 的根部有一个Dockerfileand等service1.yaml,service2.yaml并将变量传递给 Dockerfile。问题是我在 App Engine 文档中没有看到任何将变量传递给Dockerfile自定义运行时的方法。
我梦想的解决方案是能够将每个Dockerfile和保留app.yaml在各自服务的目录中,并能够通过gcloudCLI 设置构建上下文(就像我们在 中所做的那样docker-compose)。\n示例:
project\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 package.json\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 packages\n\xe2\x94\x82 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 package1\n\xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 package.json\n\xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 src\n\xe2\x94\x82 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 package2\n\xe2\x94\x82 …Run Code Online (Sandbox Code Playgroud) google-app-engine google-cloud-platform monorepo yarnpkg yarn-workspaces