【问题标题】:How to solve network connection when RUN yarn install in docker image build?在 docker image build 中运行 yarn install 时如何解决网络连接问题?
【发布时间】:2022-10-19 23:49:00
【问题描述】:

我有一个仅在 Mac 环境中发生的特殊问题。当我运行 docker build 命令来构建我的 Node 映像时,它无法获取包,通知存在连接问题。这只发生在 Mac 环境中。我在这里有一台服务器,构建正常完成,但这最终阻止了我在我的机器上进行测试。

谁能告诉我它可能是什么以及如何解决它?

Dockerfile 在这里:

FROM node:16.14-alpine3.15 as builder

ENV NODE_ENV=development

WORKDIR /home/node/app
COPY package*.json .
COPY yarn.lock .
COPY tsconfig.json .
RUN yarn install
COPY . .
RUN yarn build

FROM node:16.14-alpine3.15 as production

ENV NODE_ENV=production

RUN mkdir -p /usr/src/app
WORKDIR /usr/src/app

RUN mkdir logs

COPY package*.json .
COPY yarn.lock .
RUN yarn install

COPY --from=builder /home/node/app/dist /usr/src/app/dist

EXPOSE 3333
CMD ["yarn", "start"]

我已经尝试在 yarn install 命令中添加以下标志:

RUN yarn install --frozen-lockfile --no-cache --production --network-timeout 100000

一起或单独,但无济于事。我也删除了代理,也没有成功。

RUN yarn config delete https-proxy RUN yarn config delete proxy.

但是,我注意到这个错误只发生在 v1.22 的 Yarn 上。使用 berry 版本时不会发生相同的情况。

【问题讨论】:

  • 你好,你找到解决方法了吗,我也遇到了同样的问题。
  • 我还没有找到这种特定情况的解决方案。在构建其他图像时,我可能会注意到同样的问题。我最终在 debian 服务器上通过 ssh 运行构建。我注意到这只发生在 Mac(m1 和 intel)上,并且只发生在 yarn v1 上。如果你找到了解决方案,你能和我们分享一下吗?
  • 我尝试了--network-timeout 100000,它确实构建了一次,然后它再次抱怨,也许尝试将值增加到一个荒谬的数字。我在mac上也有这个问题:(

标签: node.js docker dockerfile yarnpkg


【解决方案1】:

可能是因为 docker 网络阻止了您的访问

尝试docker network ls 列出所有网络并尝试docker network prune 删除未使用的网络

并尝试再次安装

【讨论】:

    【解决方案2】:

    我在这里放弃了这个答案,因为代理对我的情况没有任何帮助。

    TL;博士版本检查 URL 重定向,这会导致纱线混淆

    因此,我继续研究典型的古老工具,例如详细程度检查、curl 和 dig。

    因此,首先,我尝试检查详细输出:

    宾果游戏#1。

    verbose 0.181073051 Performing "GET" request to "https://yarnpkg.com/latest-version".
    [1/4] Resolving packages...                                                       
    success Already up-to-date.                                                                                                                                          
    Done in 0.12s.                                                                                                                                                       
    info There appears to be trouble with your network connection. Retrying...                                                                                           
    verbose 33.254841183 Performing "GET" request to "https://yarnpkg.com/latest-version".                                                                               
    info There appears to be trouble with your network connection. Retrying...                                                                                           
    verbose 66.292530305 Performing "GET" request to "https://yarnpkg.com/latest-version".                                                                               
    info There appears to be trouble with your network connection. Retrying...                                                                                           
    verbose 99.329186881 Performing "GET" request to "https://yarnpkg.com/latest-version".                                                                               
    info There appears to be trouble with your network connection. Retrying...                                                                                           
    verbose 132.366749502 Performing "GET" request to "https://yarnpkg.com/latest-version".
    

    为什么没有从 yarnpkg.com 得到答案?这太疯狂了......所以,让我们看看这是否解决了:

    $ dig yarnpkg.com
    
    ; <<>> DiG 9.18.7-1+b1-Debian <<>> yarnpkg.com
    ;; global options: +cmd
    ;; Got answer:
    ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 55602
    ;; flags: qr rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 0, ADDITIONAL: 1
    
    ;; OPT PSEUDOSECTION:
    ; EDNS: version: 0, flags:; udp: 4096
    ; COOKIE: 9cf3b6f8b290069dbbe8ca8763501b11ea79617323c673e6 (good)
    ;; QUESTION SECTION:
    ;yarnpkg.com.                   IN      A
    
    ;; ANSWER SECTION:
    yarnpkg.com.            300     IN      A       104.18.126.100
    yarnpkg.com.            300     IN      A       104.16.171.99
    
    ;; Query time: 11 msec
    ;; SERVER: 192.168.1.1#53(192.168.1.1) (UDP)
    ;; WHEN: Wed Oct 19 18:43:13 EEST 2022
    ;; MSG SIZE  rcvd: 100
    

    它确实! (?)

    所以,让我们看看我通过使用 curl 得到了什么

    $ curl https://yarnpkg.com/latest-version
    Redirecting to https://classic.yarnpkg.com/latest-version
    

    什么?重定向?好的,这是新的..

    我尝试将用于检查版本的 url 设置为不是 yarnpkg.com,而是 classic.yarnpkg.com,但我找不到要使用的 yarn 配置变量。

    所以,我使用了/etc/hosts

    
    ; <<>> DiG 9.18.7-1+b1-Debian <<>> classic.yarnpkg.com
    ;; global options: +cmd
    ;; Got answer:
    ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 35092
    ;; flags: qr rd ra; QUERY: 1, ANSWER: 3, AUTHORITY: 0, ADDITIONAL: 1
    
    ;; OPT PSEUDOSECTION:
    ; EDNS: version: 0, flags:; udp: 4096
    ; COOKIE: 72636a6924283d51c4127a8463501bbb42e53d34835e8402 (good)
    ;; QUESTION SECTION:
    ;classic.yarnpkg.com.           IN      A
    
    ;; ANSWER SECTION:
    classic.yarnpkg.com.    300     IN      CNAME   yarnpkg.netlify.com.
    yarnpkg.netlify.com.    20      IN      A       3.64.200.242
    yarnpkg.netlify.com.    20      IN      A       34.141.11.154
    
    ;; Query time: 59 msec
    ;; SERVER: 192.168.1.1#53(192.168.1.1) (UDP)
    ;; WHEN: Wed Oct 19 18:46:03 EEST 2022
    ;; MSG SIZE  rcvd: 138
    
    

    将第一个 IP 设置为 yarnpkg.com

    # /etc/hosts
    34.141.48.9     yarnpkg.com
    

    答对了!!!纱线命令立即完成。

    $ yarn 
    yarn install v1.22.19
    [1/4] Resolving packages...
    success Already up-to-date.
    Done in 0.12s.
    $
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-02-07
      • 1970-01-01
      • 2017-05-23
      • 2021-09-08
      • 2022-10-13
      • 2020-04-17
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多