在 docker 容器内安装依赖项后如何复制回主机 package-lock.json/yarn.lock?

Posted

技术标签:

【中文标题】在 docker 容器内安装依赖项后如何复制回主机 package-lock.json/yarn.lock?【英文标题】:How to copy back to host package-lock.json/yarn.lock after install dependencies inside docker container? 【发布时间】:2021-04-17 20:59:19 【问题描述】:

我正在使用 Docker 容器来运行我的 CRA 应用程序。我使用 2 种不同的 DockerFile,一种用于在开发中运行 CRA,另一种用于生成构建。在安装依赖的步骤中:

FROM node:15.5.0-alpine3.10

USER node

RUN mkdir /home/node/code
WORKDIR /home/node/code

COPY package.json yarn.lock ./
RUN yarn

ENV PATH /home/node/code/node_modules/.bin:$PATH

CMD yarn start

在容器生成文件的新版本后,我需要将更新后的 yarn.lock 文件(或 package-lock.json 文件正在使用 NPM)复制回主机。

我到处搜索解决方案,但没有找到任何解决此问题的方法。

【问题讨论】:

我建议按照相反的顺序执行操作:在主机上运行 yarn upgrade,运行单元测试,然后运行 ​​docker build 以构建新映像。 (Dockerfile 不应该有一个COPY . . 行来将应用程序复制到映像中吗?) 【参考方案1】:

docker cp,例如docker cp [running container id]:/home/node/code/yarn.lock yarn.lock。您也可以使用volumes,而不是复制输入输出。

【讨论】:

【参考方案2】:

我在这里跌跌撞撞, 一个可能的解决方案是使用:

运行 yarn install --frozen-lockfile

【讨论】:

以上是关于在 docker 容器内安装依赖项后如何复制回主机 package-lock.json/yarn.lock?的主要内容,如果未能解决你的问题,请参考以下文章

如何将安装在主机服务器上的 phpmyadmin 连接到正在运行的 docker 容器内的 maria db? [关闭]

在容器内将文件从容器复制到主机

docker 怎么把宿主机的文件拷贝到运行的容器中

如何在docker和宿主机之间复制文件

docker的复制和挂载

使用 docker-compose 时如何在容器内使用主机用户修改卷文件