NPM安装时Docker被阻止-套接字超时

NPM安装时Docker被阻止-套接字超时,docker,npm,Docker,Npm,我有一个运行node的简单Dockerfile,配置如下: FROM node:latest WORKDIR /usr/src/auth-starter-server COPY ./ ./ RUN npm install CMD ["sh"] 正在docker-compose.yml上使用的,如下所示: version: "3.8" services: # Node Server auth-starter-server: con

我有一个运行node的简单Dockerfile,配置如下:

FROM node:latest

WORKDIR /usr/src/auth-starter-server

COPY ./ ./

RUN npm install

CMD ["sh"]
正在docker-compose.yml上使用的,如下所示:

version: "3.8"

services:
  # Node Server
  auth-starter-server:
    container_name: server
    restart: unless-stopped
    build: ./
    command: npm run start:live
    working_dir: /usr/src/auth-starter-server
    ports:
      - "5000:5000"
    volumes:
      - ./:/usr/src/auth-starter-server
从一天到另一天,我再也无法建立这个形象了。一开始没有问题

Creating network "react-auth-starter_default" with the default driver
Building auth-starter-server
Step 1/5 : FROM node:latest
 ---> 6f7f341ab8b8
Step 2/5 : WORKDIR /usr/src/auth-starter-server
 ---> Using cache
 ---> b25f7c08d3eb
Step 3/5 : COPY ./ ./
 ---> Using cache
 ---> 2a06e76bab32
Step 4/5 : RUN npm install
 ---> Running in 0034d6afa38e
但是,当使用
docker compose-up--build
(或者简单地说
docker build-t auth starter server.
)构建时,它在“npm install”上会超时,并返回以下错误:

npm notice 
npm notice New minor version of npm available! 7.0.15 -> 7.3.0
npm notice Changelog: <https://github.com/npm/cli/releases/tag/v7.3.0>
npm notice Run `npm install -g npm@7.3.0` to update!
npm notice 
npm ERR! code ERR_SOCKET_TIMEOUT
npm ERR! errno ERR_SOCKET_TIMEOUT
npm ERR! request to https://registry.companyregistry.com/yargs-parser/-/yargs-parser-13.1.2.tgz failed, reason: Socket timeout

npm ERR! A complete log of this run can be found in:
npm ERR!     /root/.npm/_logs/2020-12-21T15_37_42_509Z-debug.log
ERROR: Service 'auth-starter-server' failed to build : The command '/bin/sh -c npm install' returned a non-zero code: 1
它停止构建的原因是因为它指向了错误的注册表吗?如果是这样的话,如何解决呢

另一方面,我也注意到关于npm更新的警告;如何在docker映像中更新npm包


非常感谢您的回答,谢谢您的投入

我遇到了同样的问题,后来意识到我的网络连接不好,导致了ERR_SOCKET_超时

这不是因为 运行
npm安装-gnpm@7.3.0
更新!`。如下图所示,它仍在运行


发现我公司的服务器坏了,相关的注册表和类似的服务也坏了

这导致无法处理软件包安装,因为出于某种原因,我似乎从公司自定义注册表中保留了依赖项

为了解决这个问题,我:

  • 首先创建不同的npmrc配置文件,以确保在处理特定项目时使用适当的注册表-可以找到Ref

  • 然后删除
    node_模块
    package lock.json
    ,以清理剩余的

  • 使用
    npmrc

  • (可选):只需运行
    npmrc

  • 使用npm安装重新安装了所有软件包

  • 使用
    docker compose-up--build
    重建docker映像,这就完成了任务


  • 希望这能在将来帮助其他人

    事实上,我发现很多其他人也有同样的问题,他们将问题指向连接,但事实并非如此(我没有强大的连接,但它应该足以运行这种类型的进程)-我已经添加了帮助我解决此特定问题的答案,但非常感谢您的帮助!
    cli configs
    long = true
    metrics-registry = "https://registry.npmjs.org/"
    scope = ""
    user-agent = "npm/6.14.9 node/v15.4.0 darwin x64"
    
    ; builtin config undefined
    prefix = "/usr/local"
    
    ; default values
    access = null
    allow-same-version = false
    also = null
    always-auth = false
    audit = true
    audit-level = "low"
    auth-type = "legacy"
    before = null
    bin-links = true
    browser = null
    ca = null
    cache = "/Users/ale917k/.npm"
    cache-lock-retries = 10
    cache-lock-stale = 60000
    cache-lock-wait = 10000
    cache-max = null
    cache-min = 10
    cafile = undefined
    cert = null
    cidr = null
    color = true
    commit-hooks = true
    depth = null
    description = true
    dev = false
    dry-run = false
    editor = "vi"
    engine-strict = false
    fetch-retries = 2
    fetch-retry-factor = 10
    fetch-retry-maxtimeout = 60000
    fetch-retry-mintimeout = 10000
    force = false
    format-package-lock = true
    fund = true
    git = "git"
    git-tag-version = true
    global = false
    global-style = false
    globalconfig = "/usr/local/etc/npmrc"
    globalignorefile = "/usr/local/etc/npmignore"
    group = 20
    ham-it-up = false
    heading = "npm"
    https-proxy = null
    if-present = false
    ignore-prepublish = false
    ignore-scripts = false
    init-author-email = ""
    init-author-name = ""
    init-author-url = ""
    init-license = "ISC"
    init-module = "/Users/ale917k/.npm-init.js"
    init-version = "1.0.0"
    json = false
    key = null
    legacy-bundling = false
    link = false
    local-address = undefined
    loglevel = "notice"
    logs-max = 10
    ; long = false (overridden)
    maxsockets = 50
    message = "%s"
    ; metrics-registry = null (overridden)
    node-options = null
    node-version = "15.4.0"
    noproxy = null
    offline = false
    onload-script = null
    only = null
    optional = true
    otp = null
    package-lock = true
    package-lock-only = false
    parseable = false
    prefer-offline = false
    prefer-online = false
    ; prefix = "/usr/local/Cellar/node/15.4.0" (overridden)
    preid = ""
    production = false
    progress = true
    proxy = null
    read-only = false
    rebuild-bundle = true
    registry = "https://registry.npmjs.org/"
    rollback = true
    save = true
    save-bundle = false
    save-dev = false
    save-exact = false
    save-optional = false
    save-prefix = "^"
    save-prod = false
    scope = ""
    script-shell = null
    scripts-prepend-node-path = "warn-only"
    searchexclude = null
    searchlimit = 20
    searchopts = ""
    searchstaleness = 900
    send-metrics = false
    shell = "/bin/zsh"
    shrinkwrap = true
    sign-git-commit = false
    sign-git-tag = false
    sso-poll-frequency = 500
    sso-type = "oauth"
    strict-ssl = true
    tag = "latest"
    tag-version-prefix = "v"
    timing = false
    tmp = "/var/folders/2t/36_q44_s62d1b57hnl0l8khw0000gn/T"
    umask = 18
    unicode = true
    unsafe-perm = true
    update-notifier = true
    usage = false
    user = 0
    ; user-agent = "npm/{npm-version} node/{node-version} {platform} {arch} {ci}" (overridden)
    userconfig = "/Users/ale917k/.npmrc"
    version = false
    versions = false
    viewer = "man"