title: Docker and npm - gyp ERR! not ok
body: <p>Everything was working with my client until I tried to solve some <em>Network disconnected</em> issue by upgrading <code>react-scripts</code> in my <code>docker</code> client service from <code>3.0.1</code> to <code>3.3.0</code>, using <code>npm install &lt;package&gt; --save</code> and building it again. </p>
  
  <p>But then it started to complain requiring <code>css-loader</code> and <code>style-loader</code>, and I installed them. Then it did not work and I reverted my setup back to <code>3.0.1</code>, uninstalling both previous packages with <code>--save</code> flag in order to remove it from <code>node_modules/</code> as well.</p>
  
  <p>Now, when I run <code>docker-compose -f docker-compose-dev.yml build client</code>, I get the following error, <em>although client service is built</em>:</p>
  
  <pre><code>&gt; fsevents@1.2.11 install /usr/src/app/node_modules/chokidar/node_modules/fsevents
  &gt; 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.&lt;anonymous&gt; (/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 
  
  &gt; core-js@3.6.4 postinstall /usr/src/app/node_modules/core-js
  &gt; 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: 
  &gt; https://opencollective.com/core-js 
  &gt; https://www.patreon.com/zloirock 
  
  Also, the author of core-js ( https://github.com/zloirock ) is looking for a good job -)
  
  
  &gt; fsevents@1.2.11 install /usr/src/app/node_modules/jest-haste-map/node_modules/fsevents
  &gt; 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.&lt;anonymous&gt; (/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 
  </code></pre>
  
  <hr>
  
  <p>This is my <strong>docker-compose-dev.yml</strong>:</p>
  
  <pre><code>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
  </code></pre>
  
  <hr>
  
  <p>This is my <strong>client</strong> <strong>Dockerfile</strong>:</p>
  
  <pre><code># 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"]
  </code></pre>
  
  <hr>
  
  <p><strong>web</strong> service <strong>Dockerfile</strong>, which client depends on. I have tried to install <code>node-gyp</code>in the env, and <code>python</code> is certainly here. To no avail:</p>
  
  <pre><code>FROM python:3.7-slim-buster
  
  RUN apt-get update &amp;&amp; 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"]
  </code></pre>
  
  <p><strong>Package.json</strong>:</p>
  
  <pre><code>    {
    "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": [
        "&gt;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"
    }
  }
  </code></pre>
  
  <hr>
  
  <p>Now it is back to <code>3.3.0</code>, but problem persists.</p>
  
  <hr>
  
  <p><code>$ npm list</code> shows me problems with peer dependencies:</p>
  
  <pre><code>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@&gt;= 3.1.0, required by sass-loader@8.0.0
  npm ERR! peer dep missing: typescript@&gt;=2.8.0 || &gt;= 3.2.0-dev || &gt;= 3.3.0-dev || &gt;= 3.4.0-dev || &gt;= 3.5.0-dev || &gt;= 3.6.0-dev || &gt;= 3.6.0-beta || &gt;= 3.7.0-dev || &gt;= 3.7.0-beta, required by tsutils@3.17.1
  npm ERR! peer dep missing: typescript@&gt;=2.8.0 || &gt;= 3.2.0-dev || &gt;= 3.3.0-dev || &gt;= 3.4.0-dev || &gt;= 3.5.0-dev || &gt;= 3.6.0-dev || &gt;= 3.6.0-beta || &gt;= 3.7.0-dev || &gt;= 3.7.0-beta, required by tsutils@3.17.1
  </code></pre>
  
  <p>I don't know if issues are related.</p>
  
  <hr>
  
  <p>I have also installed <code>node-gyp</code> globally, tested, error persisted and then I uninstalled again.</p>
  
  <hr>
  
  <p>How do I fix this?</p>