docker - 如何在我的 docker 构建中包含本地包依赖项?

标签 docker yarnpkg yarn-workspaces turborepo

我有一个turborepo monorepo,使用 yarn 工作区,如下所示

├── 包

│ ├── 服务器通用

├──服务

│ ├── 授权

Services/auth 依赖于 packages/server-common 并使用 yarn 工作区,像这样导入

  "dependencies": {
    "server-common": "*",
  }

我想从 services/auth 构建一个 docker 镜像,但是 packages/server-common 没有托管在 npm 上,它是一个本地包。

因此,在构建以下 dockerfile 时

FROM node:16-alpine

WORKDIR /app
COPY package.json .
RUN yarn install --production
COPY . .

CMD ["npm", "start"]

它在yarn安装阶段失败,因为docker正在尝试从npm下载一个本地包。

#9 8.441 error Received malformed response from registry for "server-common". The registry may be down.

有没有办法可以将这个本地包包含在 docker 构建中?

最佳答案

解决方案是将本地包复制到容器中。

FROM node:16-alpine

COPY path/to/server-common .
WORKDIR /app
COPY package.json .
RUN yarn install --production
COPY . .

CMD ["npm", "start"]
"dependencies": {
    "server-common": "file:../server-common"
}

关于docker - 如何在我的 docker 构建中包含本地包依赖项?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72002615/

相关文章:

npm - yarn - 快速检查是否满足 `package.json` 和 `yarn.lock` 要求的正确方法?

node.js - 如何使用带有 typescript 和 out 文件夹的 yarn 工作区?

typescript - 如何管理多个 monorepos

c# - 从 Docker 容器内部使用 RabbitMQ

amazon-web-services - 在 AWS Linux AMI 2 上启用 Docker 桥接网络

php - 通过 docker compose 将 laravel 容器连接到现有的 mysql 容器

reactjs - 在故事书 monorepo 中提供静态 Assets

docker - 为多服务项目(单域)设置 SSL 证书

node.js - 更新 package.json 以反射(reflect)已安装的软件包

git - 在托管 git 子模块的 docker 中使用 Yarn