在构建docker服务之前构建monorepo的共享软件包

时间:2020-06-03 13:28:21

标签: docker docker-compose yarn monorepo yarn-workspaces

在当前项目中,我在“纱线工作区” monorepo中有4个软件包。

有一个常见的软件包,其他三个软件包都依赖于该软件包。

所以我现在的问题是我正在计划devOps部分来部署应用程序。在这种情况下,执行命令/构建命令应该是什么?

示例“

/ packages
-- /api
-- /shared
-- /frontend [depend on shared]
-- /docs  [depend on shared]
/docker-compose.yaml

我想在运行docker-compose时使用docker-compose来运行api,构建并运行前端,以及构建并运行文档。

所以它看起来可能像:-

version: '3'
services:
  api:
    build: ./packages/api
    depends_on:
      - mongodb
  web:
    build:
      context: ./packages/frontend
      dockerfile: ./packages/frontend/Dockerfile
  docs:
      context: ./packages/docs
      dockerfile: ./packages/docs/Dockerfile
  mongodb_container:
    image: mongo:latest
    environment:
      MONGO_INITDB_ROOT_USERNAME: root
      MONGO_INITDB_ROOT_PASSWORD: rootpassword
    ports:
      - 27017:27017
    volumes:
      - mongodb_data_container:/data/db
volumes:
  mongodb_data_container:

但是如何包括建立前端和文档所依赖的“共享”程序包的步骤?


额外的上下文

共享软件包package.json:-

{ 
    ....
    "name": "@myproject/shared",
    "main": "dist/index.js",
    "module": "dist/index.module.js",
    "source": "src/index.js",
    "files": [
        "dist"
    ],
    "scripts": {
        "build": "microbundle --jsx React.createElement"
    }
}

并将其包含在monorepo的任何其他项目中,我只需将其链接到依赖项

"@myproject/shared": "link:../shared"

我是否必须在上下文中包含整个package文件夹才能构建?有更好的方法吗?

0 个答案:

没有答案