首先,我对部署 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/