node.js - Jenkins 、Docker、Kubernetes、AWS EKS : RUN npm install either hangs or produces EAI_AGAIN

标签 node.js amazon-web-services docker jenkins kubernetes

首先,我对部署 CICD 版本完全陌生。

我首先通过此在 AWS EKS 集群上成功设置了 Jenkins X guide .

我能够通过 GitHub 运行管道并在正常的 jx 快速入门上成功构建。

当我开始推送我的 Node Express 应用程序时出现了问题。

在 Alpine Node 基础上,我的 dockerfile 如下所示:

FROM node:10.15.3-alpine
RUN mkdir -p /app/node_modules && chown -R node:node /app
WORKDIR /app
COPY package*.json ./
RUN npm ci --prod
FROM alpine:3.7
COPY --from=0 /usr/bin/node /usr/bin/
COPY --from=0 /usr/lib/libgcc* /usr/lib/libstdc* /usr/lib/
WORKDIR /app
COPY --from=0 /app .
EXPOSE 3000
CMD ["node", "server.js"]

它因错误而终止:

Step 5/14 : RUN npm ci --prod
 ---> Running in c7f038a80dcc
[91mnpm[0m[91m ERR! code EAI_AGAIN
[0m[91mnpm ERR! errno EAI_AGAIN
[0m[91mnpm ERR![0m[91m request to https://registry.npmjs.org/express/-/express-4.16.4.tgz failed, reason: getaddrinfo EAI_AGAIN registry.npmjs.org registry.npmjs.org:443
[0mtime="2019-03-28T08:26:00Z" level=fatal msg="build failed: building [community]: build artifact: The command '/bin/sh -c npm ci --prod' returned a non-zero code: 1"

我尝试使用非 Alpine 底座,它看起来是这样的:

FROM node:10-slim
WORKDIR /usr/src/app
COPY package*.json ./
RUN npm install
COPY . .
ENV PORT 3000
EXPOSE 3000
CMD ["npm", "start"]

但是,问题是当它到达 RUN npm install 步骤时,构建会挂起(或花费很长时间)。

我已经寻找了可能的答案和重复的问题,但没有结果。所以我最后才在这里问这个问题。

说实话,我不知道发生了什么。

最佳答案

我通过在引导 EKS 工作 Node 时启用 docker 桥接网络成功解决了这个问题。

#!/bin/bash
set -o xtrace
/etc/eks/bootstrap.sh --enable-docker-bridge true 'your-cluster-name'

此 Github 问题中有更多详细信息:https://github.com/awslabs/amazon-eks-ami/issues/183

关于node.js - Jenkins 、Docker、Kubernetes、AWS EKS : RUN npm install either hangs or produces EAI_AGAIN,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55408957/

相关文章:

javascript - Ajax 自动更新社交网站中的时间和日期

node.js - 使用 git 部署到 digitalocean 上的 dokku

amazon-web-services - AWS 上的 Realm 对象服务器 (ROS) : how to make a valid Websocket request?

python - 错误 111 连接被拒绝(Python、celery、redis)

mysql - 无法从 Docker 实例连接到 MYSQL

Node.js 中的 SOAP

amazon-web-services - 为什么 AWS Glue 会生成多个 json 文件?

c++ - 在 docker 容器中重新连接后 boost1.62 套接字损坏

docker - docker swarm 中的多个标签放置约束

javascript - 第二个异步函数取决于第一个