【问题标题】:A service is failing to build with the command '/bin/sh -c npm ci'使用命令“/bin/sh -c npm ci”构建服务失败
【发布时间】:2019-08-15 05:57:11
【问题描述】:

我正在设置一个容器来托管我的 react 客户端代码,但在本地计算机上构建失败,退出代码为 1。我应该如何解决此错误?

我已尝试重新启动 docker-machine 和 docker 客户端。

docker-machine 版本 0.16.0,构建 702c267f

docker-compose 版本 1.17.1,构建未知

Docker 版本 19.03.1,构建 74b1e89

我的 docker-compose.yml:

version: '3.3'

services:

client:
    build: 
      context: ./services/client
      dockerfile: Dockerfile
    volumes: 
      - './services/client:/usr/src/app'
      - '/usr/src/app/node_modules'
    ports: 
      - 3007:3000
    environment: 
      - NODE_ENV=development
      - REACT_APP_USERS_SERVICE_URL=${REACT_APP_USERS_SERVICE_URL}
    depends_on: 
      - users

我的 Dockerfile:

# base image
FROM node:11.12.0-alpine

# set working directory
WORKDIR /usr/src/app

# add /usr/src/app/node_modules/.bin to $PATH
ENV PATH /usr/src/app/node_modules/.bin:$PATH

# install and cache app dependencies
COPY package.json /usr/src/app/package.json
COPY package-lock.json /usr/src/app/package-lock.json
RUN npm ci
RUN npm install react-scripts -g --silent

# start app
CMD ["npm", "start"]

我希望服务“客户端”能够成功构建,但我不断收到以下错误。

npm ERR! code EAI_AGAIN
npm ERR! errno EAI_AGAIN
npm ERR! request to https://registry.npmjs.org/enzyme/-/enzyme-3.10.0.tgz failed, reason: getaddrinfo EAI_AGAIN registry.npmjs.org registry.npmjs.org:443

npm ERR! A complete log of this run can be found in:
npm ERR!     /root/.npm/_logs/2019-08-15T05_55_38_024Z-debug.log
ERROR: Service 'client' failed to build: The command '/bin/sh -c npm ci' returned a non-zero code: 1

【问题讨论】:

  • npm ERR! errno EAI_AGAIN表示 DNS 错误
  • 我该如何解决这个问题?我正在使用 Ubuntu 18.04

标签: reactjs docker docker-compose docker-machine


【解决方案1】:

错误npm ERR! errno EAI_AGAIN 表示DNS 错误我建议您执行以下操作之一:

使用host 网络构建您的图像:

version: '3.4'

services:

client:
    build: 
      context: ./services/client
      dockerfile: Dockerfile
      network: host
    volumes: 
      - './services/client:/usr/src/app'
      - '/usr/src/app/node_modules'
    ports: 
      - 3007:3000
    environment: 
      - NODE_ENV=development
      - REACT_APP_USERS_SERVICE_URL=${REACT_APP_USERS_SERVICE_URL}
    depends_on: 
      - users

或将dns 设置添加到您的daemon.json 文件中:

{
    "dns": ["8.8.8.8"]
}

【讨论】:

  • 成功了。谢谢你。但是有一个问题,当我将它部署到 vps 时会怎样。我应该使用相同的设置吗?
  • 这取决于主机/docker configs。但如果你再次使用它们不会有任何伤害
猜你喜欢
  • 2016-05-17
  • 2016-01-03
  • 1970-01-01
  • 2019-06-12
  • 2021-08-02
  • 2018-08-10
  • 1970-01-01
  • 1970-01-01
  • 2017-11-28
相关资源
最近更新 更多