纱线安装在码头图像内与纱线工作区

dag*_*da1 16 docker yarnpkg

我正在使用纱线工作区,我在package.json中有这个包:

  "workspaces": ["packages/*"]
Run Code Online (Sandbox Code Playgroud)

我正在尝试创建一个docker镜像进行部署,我有以下Dockerfile:

# production dockerfile
FROM node:9.2

# add code
COPY ./packages/website/dist /cutting

WORKDIR /cutting

COPY package.json /cutting/
RUN yarn install --pure-lockfile && yarn cache clean --production

CMD npm run serve
Run Code Online (Sandbox Code Playgroud)

但是我收到以下错误:

error发生意外错误:" https://registry.yarnpkg.com/@cutting%2futil:Not found"

@cutting/util 是我的一个工作区包的名称.

所以问题是docker镜像中没有源代码,所以它试图从yarnpkg安装它.

部署到docker镜像时处理工作空间的最佳方法是什么.

and*_*bin 5

该代码将无法在docker vm之外运行,因此也会在docker内拒绝。

问题是您已经构建了一个代码,然后复制捆绑的代码。纱线工作区正在寻找文件夹中package.json没有的纱线dist。工作区只是在公共node_modules文件夹中创建到您正在使用的其他工作区的链接。那里需要源代码。(顺便说一句,为什么不在docker vm内部构建代码?那样,源代码和dist也将可用。)