服务无法使用命令'/ bin / sh -c npm ci'构建

时间:2019-08-15 05:57:11

标签: reactjs docker docker-compose docker-machine

我正在设置一个容器来托管我的客户端代码,但是在本地计算机上的构建失败,退出代码为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

1 个答案:

答案 0 :(得分:0)

错误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"]
}