Gab*_*son 5 google-app-engine google-cloud-platform monorepo yarnpkg yarn-workspaces
我目前正在将我们的 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 \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\x94\xe2\x94\x80\xe2\x94\x80 package3\n\xe2\x94\x82 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 package.json\n\xe2\x94\x82 \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 src\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 services\n\xe2\x94\x82 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 service1\n\xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 app.yaml\n\xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 Dockerfile\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\x94\xe2\x94\x80\xe2\x94\x80 service2\n\xe2\x94\x82 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 app.yaml\n\xe2\x94\x82 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 Dockerfile\n\xe2\x94\x82 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 package.json\n\xe2\x94\x82 \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 src\n\xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 yarn.lock\nRun Code Online (Sandbox Code Playgroud)\n\n并运行类似:gcloud app deploy services/service1/app.yaml --build-context=.
但我在文档中没有看到任何执行此操作的方法。
\n\n你知道我怎样才能更接近我的“梦想解决方案”吗?
\n添加评论中建议的可能选项以提供更多可见性。
一种可能性是保留docker-compose您正在使用的工作流程并将其与您的 App Engine 部署集成。
由于您已经在构建 docker 映像以docker-compose指定构建上下文,因此您可以将构建操作的结果推送到 Google 的 Container Registry,以便稍后可以通过使用--image-url 标志使用这些映像来部署 App Engine 。
| 归档时间: |
|
| 查看次数: |
1374 次 |
| 最近记录: |