डॉकर और npm - जिप ERR! ठीक नहीं है


10

सब कुछ मेरे मुवक्किल के साथ काम कर रहा था जब तक मैं कुछ का समाधान करने की कोशिश की नेटवर्क डिस्कनेक्ट उन्नयन करके समस्या react-scriptsमेरे में dockerसे ग्राहक सेवा 3.0.1करने के लिए 3.3.0, का उपयोग करते हुए npm install <package> --saveऔर इसे फिर से निर्माण।

लेकिन फिर उसे आवश्यकता की शिकायत होने लगी css-loaderऔर style-loader, और मैंने उन्हें स्थापित कर दिया। तब यह काम नहीं किया और मैंने अपना सेटअप वापस कर दिया 3.0.1, साथ ही --saveइसे हटाने के लिए दोनों पिछले पैकेजों को ध्वज के साथ अनइंस्टॉल कर दिया node_modules/

अब, जब मैं दौड़ता हूं, तो मुझे docker-compose -f docker-compose-dev.yml build clientनिम्नलिखित त्रुटि मिलती है, हालांकि ग्राहक सेवा निर्मित है :

> fsevents@1.2.11 install /usr/src/app/node_modules/chokidar/node_modules/fsevents
> node-gyp rebuild

gyp info it worked if it ends with ok
gyp info using node-gyp@3.8.0
gyp info using node@11.12.0 | linux | x64
gyp ERR! configure error 
gyp ERR! stack Error: Can't find Python executable "python", you can set the PYTHON env variable.
gyp ERR! stack     at PythonFinder.failNoPython (/usr/local/lib/node_modules/npm/node_modules/node-gyp/lib/configure.js:484:19)
gyp ERR! stack     at PythonFinder.<anonymous> (/usr/local/lib/node_modules/npm/node_modules/node-gyp/lib/configure.js:406:16)
gyp ERR! stack     at F (/usr/local/lib/node_modules/npm/node_modules/which/which.js:68:16)
gyp ERR! stack     at E (/usr/local/lib/node_modules/npm/node_modules/which/which.js:80:29)
gyp ERR! stack     at /usr/local/lib/node_modules/npm/node_modules/which/which.js:89:16
gyp ERR! stack     at /usr/local/lib/node_modules/npm/node_modules/isexe/index.js:42:5
gyp ERR! stack     at /usr/local/lib/node_modules/npm/node_modules/isexe/mode.js:8:5
gyp ERR! stack     at FSReqCallback.oncomplete (fs.js:158:21)
gyp ERR! System Linux 4.9.184-linuxkit
gyp ERR! command "/usr/local/bin/node" "/usr/local/lib/node_modules/npm/node_modules/node-gyp/bin/node-gyp.js" "rebuild"
gyp ERR! cwd /usr/src/app/node_modules/chokidar/node_modules/fsevents
gyp ERR! node -v v11.12.0
gyp ERR! node-gyp -v v3.8.0
gyp ERR! not ok 

> core-js@3.6.4 postinstall /usr/src/app/node_modules/core-js
> node -e "try{require('./postinstall')}catch(e){}"

Thank you for using core-js ( https://github.com/zloirock/core-js ) for polyfilling JavaScript standard library!

The project needs your help! Please consider supporting of core-js on Open Collective or Patreon: 
> https://opencollective.com/core-js 
> https://www.patreon.com/zloirock 

Also, the author of core-js ( https://github.com/zloirock ) is looking for a good job -)


> fsevents@1.2.11 install /usr/src/app/node_modules/jest-haste-map/node_modules/fsevents
> node-gyp rebuild

gyp info it worked if it ends with ok
gyp info using node-gyp@3.8.0
gyp info using node@11.12.0 | linux | x64
gyp ERR! configure error 
gyp ERR! stack Error: Can't find Python executable "python", you can set the PYTHON env variable.
gyp ERR! stack     at PythonFinder.failNoPython (/usr/local/lib/node_modules/npm/node_modules/node-gyp/lib/configure.js:484:19)
gyp ERR! stack     at PythonFinder.<anonymous> (/usr/local/lib/node_modules/npm/node_modules/node-gyp/lib/configure.js:406:16)
gyp ERR! stack     at F (/usr/local/lib/node_modules/npm/node_modules/which/which.js:68:16)
gyp ERR! stack     at E (/usr/local/lib/node_modules/npm/node_modules/which/which.js:80:29)
gyp ERR! stack     at /usr/local/lib/node_modules/npm/node_modules/which/which.js:89:16
gyp ERR! stack     at /usr/local/lib/node_modules/npm/node_modules/isexe/index.js:42:5
gyp ERR! stack     at /usr/local/lib/node_modules/npm/node_modules/isexe/mode.js:8:5
gyp ERR! stack     at FSReqCallback.oncomplete (fs.js:158:21)
gyp ERR! System Linux 4.9.184-linuxkit
gyp ERR! command "/usr/local/bin/node" "/usr/local/lib/node_modules/npm/node_modules/node-gyp/bin/node-gyp.js" "rebuild"
gyp ERR! cwd /usr/src/app/node_modules/jest-haste-map/node_modules/fsevents
gyp ERR! node -v v11.12.0
gyp ERR! node-gyp -v v3.8.0
gyp ERR! not ok 

यह मेरा कर्ता-धर्ता-देव है

web:
    build:
      context: ./services/web
      dockerfile: Dockerfile-dev
    volumes:
      - './services/web:/usr/src/app'

    ports:
      - 5001:5000
    environment:
      - FLASK_ENV=development
      - APP_SETTINGS=brandio.config.DevelopmentConfig
      - DATABASE_URL=postgres://postgres:postgres@web-db:5432/web_dev 
      - DATABASE_TEST_URL=postgres://postgres:postgres@web-db:5432/web_test
      - SECRET_KEY=my_precious
    depends_on:  
      - web-db
      - redis

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

यह मेरा ग्राहक डॉकफाइल है :

# 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@3.3.0 -g --silent

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

वेब सेवा Dockerfile , जिस पर ग्राहक निर्भर करता है। मैंने node-gypएनवी में स्थापित करने की कोशिश की है , और pythonनिश्चित रूप से यहां है। कोई फायदा नहीं:

FROM python:3.7-slim-buster

RUN apt-get update && apt-get -y dist-upgrade 
RUN apt-get -y install node-gyp build-essential libssl-dev libffi-dev libblas3 libc6 liblapack3 gcc python3-dev 
RUN apt install -y netcat

# set working directory
WORKDIR /usr/src/app

COPY ./requirements.txt /usr/src/app/requirements.txt 
RUN pip3 install -r requirements.txt

# add entrypoint.sh
COPY ./entrypoint.sh /usr/src/app/entrypoint.sh

RUN chmod +x /usr/src/app/entrypoint.sh

# add app
COPY . /usr/src/app

# run server
CMD ["/usr/src/app/entrypoint.sh"]

Package.json :

    {
  "name": "client",
  "version": "0.1.0",
  "private": true,
  "dependencies": {
    "axios": "^0.18.1",
    "react": "^16.8.6",
    "react-alert": "^5.5.0",
    "react-dom": "^16.8.6",
    "react-hot-loader": "^4.5.3",
    "react-html-parser": "^2.0.2",
    "react-player": "^1.13.0",
    "react-router-dom": "^5.0.0",
    "react-scripts": "^3.3.0",
    "react-transition-group": "^2.9.0",
    "spotify-web-api-js": "^1.2.0"
  },
  "scripts": {
    "start": "react-scripts start",
    "build": "react-scripts build",
    "test": "react-scripts test",
    "eject": "react-scripts eject"
  },
  "eslintConfig": {
    "extends": "react-app"
  },
  "browserslist": {
    "production": [
      ">0.2%",
      "not op_mini all"
    ],
    "development": [
      "last 1 chrome version",
      "last 1 firefox version",
      "last 1 safari version"
    ]
  },
  "devDependencies": {
    "enzyme": "^3.11.0",
    "enzyme-adapter-react-16": "^1.15.2"
  }
}

अब यह वापस आ गया है 3.3.0, लेकिन समस्या बनी हुई है।


$ npm list सहकर्मी निर्भरता के साथ मुझे समस्याएं दिखाता है:

npm ERR! peer dep missing: @types/react@^15.0.0 || ^16.0.0, required by react-hot-loader@4.12.18
npm ERR! peer dep missing: typescript@^3.2.1, required by react-scripts@3.3.0
npm ERR! peer dep missing: node-sass@^4.0.0, required by sass-loader@8.0.0
npm ERR! peer dep missing: sass@^1.3.0, required by sass-loader@8.0.0
npm ERR! peer dep missing: fibers@>= 3.1.0, required by sass-loader@8.0.0
npm ERR! peer dep missing: typescript@>=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta, required by tsutils@3.17.1
npm ERR! peer dep missing: typescript@>=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta, required by tsutils@3.17.1

मुझे नहीं पता कि क्या मुद्दे संबंधित हैं।


मैंने node-gypविश्व स्तर पर भी परीक्षण किया है, त्रुटि कायम है और फिर मैंने फिर से स्थापना रद्द कर दी है।


मैं यह कैसे तय करुं?


ऐसा लगता है कि कंटेनर node:11.12.0-alpineमें एक अजगर वितरण स्थापित नहीं है
जेन्स

1
मुझे नहीं मिला। यह इस सटीक सेटअप के साथ महीनों तक काम कर रहा था।
8-बिट बोर्जेस

हो सकता है, लेकिन मुझे उस डॉकटराइल में कुछ भी दिखाई नहीं दे रहा है जो पायथन को स्थापित करता है, इसलिए यदि यह पहले काम करता है, तो यह चमत्कारिक है। मेरे द्वारा काम करने वाले समाधानों में दो डॉकफाइल्स होते हैं, एक नोड के लिए, और एक अजगर के लिए, एक डॉकटर-कंपोज के साथ। दोनों को लोड करता है।
माइक 'पोमैक्स' Kamermans

अजगर webसेवा में स्थापित है , जो ग्राहक पर निर्भर करता है। क्या यह समझ में आता है?
8-बिट बोर्जेस

यह नहीं है: कम से कम अतिरिक्त जानकारी के बिना नहीं कि आपने उस webकार्य को कहां परिभाषित किया है , और इसमें क्या है।
माइक 'पोमैक्स' Kamermans

जवाबों:


3

अपने ग्राहक Dockerfile में निम्न पंक्ति जोड़ें:

RUN apk update && apk add python make g++

तो यह इस तरह दिखना चाहिए:

# base image
FROM node:11.12.0-alpine

RUN apk update && apk add python make g++

# 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@3.3.0 -g --silent

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

अपने वेब छवि है python3.7। क्या इसे यहां नहीं जोड़ा जाना चाहिए python3?
8-बिट बोरिज

1
अनुशंसित परिवर्तन क्लाइंट डॉक फ़ाइल के लिए है न कि वेब डॉक फ़ाइल के लिए। अजगर को नोड-जिप मॉड्यूल के पुनर्निर्माण की आवश्यकता है। इस अजगर का आपके वेब डॉकटर में अजगर से कोई लेना देना नहीं है।
AAber

मुझे दिलचस्प लगता है कि npm ciआपके ci / cd में काम करने के लिए आपको निर्भरता के रूप में अजगर की आवश्यकता है।
teseo
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.