在 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? [关闭]