如何在不将包发布到 npm 注册表的情况下将依赖于 yarn 工作区的应用程序部署到 Google App Engine?
How can I deploy to Google App Engine an app that depends on a yarn workspaces without publishing the packages to a npm registry?
我目前正在将我们的 monorepo 迁移到 yarn 工作区。它包含多个包和服务。服务依赖于各自 package.json
中的包。我想将我的服务部署到 Google App Engine,而不必将包发布到私有 npm 注册表。
我设法通过使用自定义 运行time 并将 app.yaml
和 Dockerfile
移动到 monorepo 的根目录来部署单个服务,以便访问构建上下文中的包和服务。问题是我有多个服务,我不能将所有 dockerfile 都放在 monorepo 的根目录下,因为它们必须被命名为 Dockerfile
并且我无法更改构建上下文。
我看到 2 个天真的解决方案:
首先是在部署之前将相应服务的 app.yaml
和 Dockerfile
移动到 monorepo 的根目录。但这看起来很脏,会使 CI 代码非常复杂。
第二种方法是在 monorepo 的根目录下有一个 Dockerfile
和 service1.yaml
、service2.yaml
等,并将变量传递给 Dockerfile。问题是我在 App Engine 文档中看不到任何将变量传递给自定义 运行time.
的 Dockerfile
的方法
我梦想的解决方案是能够将每个 Dockerfile
和 app.yaml
保存在各自服务的目录中,并能够通过 gcloud
设置构建上下文CLI(就像我们在 docker-compose
中所做的那样)。
示例:
project
├── package.json
├── packages
│ ├── package1
│ │ ├── package.json
│ │ └── src
│ ├── package2
│ │ ├── package.json
│ │ └── src
│ └── package3
│ ├── package.json
│ └── src
├── services
│ ├── service1
│ │ ├── app.yaml
│ │ ├── Dockerfile
│ │ ├── package.json
│ │ └── src
│ └── service2
│ ├── app.yaml
│ ├── Dockerfile
│ ├── package.json
│ └── src
└── yarn.lock
和 运行 类似于:gcloud app deploy services/service1/app.yaml --build-context=.
但我没有在文档中看到任何执行此操作的方法。
你知道我怎样才能更接近我的"dream solution"吗?
我目前正在将我们的 monorepo 迁移到 yarn 工作区。它包含多个包和服务。服务依赖于各自 package.json
中的包。我想将我的服务部署到 Google App Engine,而不必将包发布到私有 npm 注册表。
我设法通过使用自定义 运行time 并将 app.yaml
和 Dockerfile
移动到 monorepo 的根目录来部署单个服务,以便访问构建上下文中的包和服务。问题是我有多个服务,我不能将所有 dockerfile 都放在 monorepo 的根目录下,因为它们必须被命名为 Dockerfile
并且我无法更改构建上下文。
我看到 2 个天真的解决方案:
首先是在部署之前将相应服务的 app.yaml
和 Dockerfile
移动到 monorepo 的根目录。但这看起来很脏,会使 CI 代码非常复杂。
第二种方法是在 monorepo 的根目录下有一个 Dockerfile
和 service1.yaml
、service2.yaml
等,并将变量传递给 Dockerfile。问题是我在 App Engine 文档中看不到任何将变量传递给自定义 运行time.
Dockerfile
的方法
我梦想的解决方案是能够将每个 Dockerfile
和 app.yaml
保存在各自服务的目录中,并能够通过 gcloud
设置构建上下文CLI(就像我们在 docker-compose
中所做的那样)。
示例:
project
├── package.json
├── packages
│ ├── package1
│ │ ├── package.json
│ │ └── src
│ ├── package2
│ │ ├── package.json
│ │ └── src
│ └── package3
│ ├── package.json
│ └── src
├── services
│ ├── service1
│ │ ├── app.yaml
│ │ ├── Dockerfile
│ │ ├── package.json
│ │ └── src
│ └── service2
│ ├── app.yaml
│ ├── Dockerfile
│ ├── package.json
│ └── src
└── yarn.lock
和 运行 类似于:gcloud app deploy services/service1/app.yaml --build-context=.
但我没有在文档中看到任何执行此操作的方法。
你知道我怎样才能更接近我的"dream solution"吗?