Ubuntu20.10下Docker构建Node.js镜像执行npm install失败如何解决
问题本质说明
Docker构建过程中运行的临时容器默认使用独立的桥接网络,和宿主机的本地网络环境、npm配置相互隔离,因此会出现本地可正常安装依赖、但构建时无法拉取npm包的情况。
解决方案
方案1:临时指定npm镜像源(最简便,无需修改系统配置)
执行构建命令时直接传入npm源参数即可:
docker build . --build-arg NPM_CONFIG_REGISTRY=https://registry.npmmirror.com
你也可以直接修改Dockerfile里的npm安装语句,固定镜像源:
RUN npm install --registry=https://registry.npmmirror.com
方案2:使用宿主机网络构建
直接指定构建阶段复用宿主机网络,即可继承本地的网络访问能力:
docker build . --network=host
方案3:修复Docker默认DNS配置
如果是Docker容器内DNS解析失败导致的无法访问npm源,可以修改Docker全局DNS配置:
- 编辑Docker daemon配置文件,不存在则直接新建:
sudo nano /etc/docker/daemon.json
- 写入以下DNS配置:
{ "dns": ["8.8.8.8", "114.114.114.114"] }
- 重启Docker服务生效:
sudo systemctl daemon-reload sudo systemctl restart docker
修改完成后重新执行构建命令即可。
内容的提问来源于stack exchange,提问作者margherita pizza
相关产品推荐
相关产品推荐

