在前文 使用 Lerna 创建单一仓库的 TypeScript 多包项目 基础上,增加了 docker 的支持。
代码见:https://github.com/MarshalW/monorepo-lerna/tree/v1.1.0
基本思路是:
- 各个子模块不必发布到比如 npm,而是借助 lerna 建立依赖支持
- dockder multistage build,多阶段构建
- 先构建总体的阶段,主要是公用依赖库
- 再按照依赖顺序,分别构建各自阶段,需要用到
lerna bootstrap
为子项目配置依赖 - 最后的阶段
- 复制之前子项目阶段的相关文件,主要是 ts 编译后的 js
- 通过 CMD 启动 simple-service
文件代码:
1 | FROM node:16-alpine3.15 as base |