title: GitHub action fails when deploying to DigitalOcean
body: <p>I'm getting an error while trying to deploy to DigitalOcean through github actions and I'm not sure why  it is yelling about python. Is it due to the docker images I'm using? I've tried installing the versions of python on the droplet, even though that probably has nothing to do with it.</p>
  <p>Here is the dockerfile in question:</p>
  <pre><code>FROM node:alpine3.12 as build
  
  WORKDIR /usr/src/app
  COPY package*.json ./
  RUN yarn cache clean &amp;&amp; yarn --update-checksums
  COPY . ./
  RUN yarn &amp;&amp; yarn build
  
  # Stage - Production
  FROM nginx:1.17-alpine
  COPY --from=build /usr/src/app/build /usr/share/nginx/html
  EXPOSE 80
  CMD [&quot;nginx&quot;, &quot;-g&quot;, &quot;daemon off;&quot;]
  </code></pre>
  <p>Here is the deploy.yml file for the actions:</p>
  <pre><code>name: build
  
  on:
    push:
      branches:
        - master
  
  jobs:
    build:
      runs-on: ubuntu-latest
      steps:
        - uses: actions/checkout@v1
        - name: Use Node.js 13.10
          uses: actions/setup-node@v1
          with:
            node-version: '13.10'
        - name: Install yarn and run unittest
          run: |
            yarn
            yarn test
          env:
            CI: true
        - name: Publish to Github Packages Registry
          uses: elgohr/Publish-Docker-Github-Action@master
          with:
            name: fanzypantz/onepole/onepole
            registry: docker.pkg.github.com
            username: ${{ secrets.USERNAME }}
            password: ${{ secrets.GITHUB_TOKEN }}
            dockerfile: Dockerfile-prod
            tags: latest
        - name: Deploy package to digitalocean
          uses: appleboy/ssh-action@master
          env:
            GITHUB_USERNAME: ${{ secrets.USERNAME }}
            GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
          with:
            host: ${{ secrets.HOST }}
            username: ${{ secrets.USERNAME }}
            password: ${{ secrets.PASSWORD }}
            port: ${{ secrets.PORT }}
            envs: GITHUB_USERNAME, GITHUB_TOKEN
            script: |
              docker stop $(docker ps -a -q)
              docker login docker.pkg.github.com -u $GITHUB_USERNAME -p $GITHUB_TOKEN
              docker pull docker.pkg.github.com/fanzypantz/onepole/onepole:latest
              docker run -dit -p 80:80 docker.pkg.github.com/fanzypantz/onepole/onepole:latest
  </code></pre>
  <p>Error from github actions</p>
  <pre><code>Step 1/10 : FROM node:alpine3.12 as build
  alpine3.12: Pulling from library/node
  188c0c94c7c5: Pulling fs layer
  9e35e0178777: Pulling fs layer
  90f5366a8ab8: Pulling fs layer
  39095b5b3547: Pulling fs layer
  39095b5b3547: Waiting
  188c0c94c7c5: Verifying Checksum
  188c0c94c7c5: Download complete
  188c0c94c7c5: Pull complete
  90f5366a8ab8: Download complete
  9e35e0178777: Verifying Checksum
  9e35e0178777: Download complete
  39095b5b3547: Verifying Checksum
  39095b5b3547: Download complete
  9e35e0178777: Pull complete
  90f5366a8ab8: Pull complete
  39095b5b3547: Pull complete
  Digest: sha256:96683bc4c05c2cb2c3bee957cdf7b967051323dafb937301d4b9fac30e529d7a
  Status: Downloaded newer image for node:alpine3.12
   ---&gt; 8f99f65ba94a
  Step 2/10 : WORKDIR /usr/src/app
   ---&gt; Running in 8fa7d7cacf45
  Removing intermediate container 8fa7d7cacf45
   ---&gt; 9d3dddf518f7
  Step 3/10 : COPY package*.json ./
   ---&gt; ee091cf8a93a
  Step 4/10 : RUN yarn cache clean &amp;&amp; yarn --update-checksums
   ---&gt; Running in d03b8ed6e52a
  yarn cache v1.***.5
  success Cleared cache.
  Done in 0.04s.
  yarn install v1.***.5
  info No lockfile found.
  [1/4] Resolving packages...
  warning @testing-library/jest-dom &gt; css &gt; urix@0.1.0: Please see https://github.com/lydell/urix#deprecated
  warning @testing-library/jest-dom &gt; css &gt; source-map-resolve &gt; urix@0.1.0: Please see https://github.com/lydell/urix#deprecated
  warning @testing-library/jest-dom &gt; css &gt; source-map-resolve &gt; resolve-url@0.2.1: https://github.com/lydell/resolve-url#deprecated
  warning @testing-library/react &gt; @types/testing-library__react &gt; @types/testing-library__dom@7.5.0: This is a stub types definition. testing-library__dom provides its own type definitions, so you do not need this installed.
  warning node-sass &gt; request@2.88.2: request has been deprecated, see https://github.com/request/request/issues/3142
  warning node-sass &gt; node-gyp &gt; request@2.88.2: request has been deprecated, see https://github.com/request/request/issues/3142
  warning node-sass &gt; request &gt; har-validator@5.1.5: this library is no longer supported
  warning react-scripts &gt; eslint-loader@3.0.3: This loader has been deprecated. Please use eslint-webpack-plugin
  warning react-scripts &gt; jest-environment-jsdom-fourteen &gt; jsdom &gt; request@2.88.2: request has been deprecated, see https://github.com/request/request/issues/3142
  warning react-scripts &gt; webpack-dev-server &gt; chokidar@2.1.8: Chokidar 2 will break on node v14+. Upgrade to chokidar 3 with 15x less dependencies.
  warning react-scripts &gt; webpack-dev-server &gt; chokidar &gt; fsevents@1.2.13: fsevents 1 will break on node v14+ and could be using insecure binaries. Upgrade to fsevents 2.
  warning react-scripts &gt; babel-jest &gt; @jest/transform &gt; jest-haste-map &gt; fsevents@1.2.13: fsevents 1 will break on node v14+ and could be using insecure binaries. Upgrade to fsevents 2.
  warning react-scripts &gt; jest-environment-jsdom-fourteen &gt; jsdom &gt; request-promise-native@1.0.9: request-promise-native has been deprecated because it extends the now deprecated request package, see https://github.com/request/request/issues/3142
  warning react-scripts &gt; workbox-webpack-plugin &gt; workbox-build &gt; @hapi/joi@15.1.1: joi is leaving the @hapi organization and moving back to 'joi' (https://github.com/sideway/joi/issues/2411)
  warning react-scripts &gt; webpack &gt; watchpack &gt; watchpack-chokidar2 &gt; chokidar@2.1.8: Chokidar 2 will break on node v14+. Upgrade to chokidar 3 with 15x less dependencies.
  warning react-scripts &gt; jest &gt; jest-cli &gt; jest-config &gt; jest-environment-jsdom &gt; jsdom &gt; request@2.88.2: request has been deprecated, see https://github.com/request/request/issues/3142
  warning react-scripts &gt; jest &gt; jest-cli &gt; jest-config &gt; jest-environment-jsdom &gt; jsdom &gt; request-promise-native@1.0.9: request-promise-native has been deprecated because it extends the now deprecated request package, see https://github.com/request/request/issues/3142
  warning react-scripts &gt; workbox-webpack-plugin &gt; workbox-build &gt; @hapi/joi &gt; @hapi/topo@3.1.6: This version has been deprecated and is no longer supported or maintained
  warning react-scripts &gt; workbox-webpack-plugin &gt; workbox-build &gt; @hapi/joi &gt; @hapi/hoek@8.5.1: This version has been deprecated and is no longer supported or maintained
  warning react-scripts &gt; workbox-webpack-plugin &gt; workbox-build &gt; @hapi/joi &gt; @hapi/topo &gt; @hapi/hoek@8.5.1: This version has been deprecated and is no longer supported or maintained
  warning react-scripts &gt; workbox-webpack-plugin &gt; workbox-build &gt; @hapi/joi &gt; @hapi/bourne@1.3.2: This version has been deprecated and is no longer supported or maintained
  warning react-scripts &gt; workbox-webpack-plugin &gt; workbox-build &gt; @hapi/joi &gt; @hapi/address@2.1.4: This version has been deprecated and is no longer supported or maintained
  warning react-scripts &gt; jest &gt; jest-cli &gt; jest-config &gt; jest-environment-jsdom &gt; jsdom &gt; left-pad@1.3.0: use String.prototype.padStart()
  warning react-scripts &gt; workbox-webpack-plugin &gt; workbox-build &gt; strip-comments &gt; babel-plugin-transform-object-rest-spread &gt; babel-runtime &gt; core-js@2.6.11: core-js@&lt;3 is no longer maintained and not recommended for usage due to the number of issues. Please, upgrade your dependencies to the actual version of core-js@3.
  [2/4] Fetching packages...
  info fsevents@2.1.2: The platform &quot;linux&quot; is incompatible with this module.
  info &quot;fsevents@2.1.2&quot; is an optional dependency and failed compatibility check. Excluding it from installation.
  info fsevents@1.2.13: The platform &quot;linux&quot; is incompatible with this module.
  info &quot;fsevents@1.2.13&quot; is an optional dependency and failed compatibility check. Excluding it from installation.
  info fsevents@2.1.3: The platform &quot;linux&quot; is incompatible with this module.
  info &quot;fsevents@2.1.3&quot; is an optional dependency and failed compatibility check. Excluding it from installation.
  [3/4] Linking dependencies...
  warning &quot; &gt; @testing-library/user-event@7.2.1&quot; has unmet peer dependency &quot;@testing-library/dom@&gt;=5&quot;.
  warning &quot;react-scripts &gt; @typescript-eslint/eslint-plugin &gt; tsutils@3.17.1&quot; has unmet peer dependency &quot;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&quot;.
  [4/4] Building fresh packages...
  error /usr/src/app/node_modules/node-sass: Command failed.
  Exit code: 1
  Command: node scripts/build.js
  Arguments: 
  Directory: /usr/src/app/node_modules/node-sass
  Output:
  Building: /usr/local/bin/node /usr/src/app/node_modules/node-gyp/bin/node-gyp.js rebuild --verbose --libsass_ext= --libsass_cflags= --libsass_ldflags= --libsass_library=
  gyp info it worked if it ends with ok
  gyp verb cli [
  gyp verb cli   '/usr/local/bin/node',
  gyp verb cli   '/usr/src/app/node_modules/node-gyp/bin/node-gyp.js',
  gyp verb cli   'rebuild',
  gyp verb cli   '--verbose',
  gyp verb cli   '--libsass_ext=',
  gyp verb cli   '--libsass_cflags=',
  gyp verb cli   '--libsass_ldflags=',
  gyp verb cli   '--libsass_library='
  gyp verb cli ]
  gyp info using node-gyp@3.8.0
  gyp info using node@15.0.0 | linux | x64
  gyp verb command rebuild []
  gyp verb command clean []
  gyp verb clean removing &quot;build&quot; directory
  gyp verb command configure []
  gyp verb check python checking for Python executable &quot;python2&quot; in the PATH
  gyp verb `which` failed Error: not found: python2
  gyp verb `which` failed     at getNotFoundError (/usr/src/app/node_modules/which/which.js:13:12)
  gyp verb `which` failed     at F (/usr/src/app/node_modules/which/which.js:68:19)
  gyp verb `which` failed     at E (/usr/src/app/node_modules/which/which.js:80:29)
  gyp verb `which` failed     at /usr/src/app/node_modules/which/which.js:89:16
  gyp verb `which` failed     at /usr/src/app/node_modules/isexe/index.js:42:5
  gyp verb `which` failed     at /usr/src/app/node_modules/isexe/mode.js:8:5
  gyp verb `which` failed     at FSReqCallback.oncomplete (node:fs:183:21)
  gyp verb `which` failed  python2 Error: not found: python2
  gyp verb `which` failed     at getNotFoundError (/usr/src/app/node_modules/which/which.js:13:12)
  gyp verb `which` failed     at F (/usr/src/app/node_modules/which/which.js:68:19)
  gyp verb `which` failed     at E (/usr/src/app/node_modules/which/which.js:80:29)
  gyp verb `which` failed     at /usr/src/app/node_modules/which/which.js:89:16
  gyp verb `which` failed     at /usr/src/app/node_modules/isexe/index.js:42:5
  gyp verb `which` failed     at /usr/src/app/node_modules/isexe/mode.js:8:5
  gyp verb `which` failed     at FSReqCallback.oncomplete (node:fs:183:21) {
  gyp verb `which` failed   code: 'ENOENT'
  gyp verb `which` failed }
  gyp verb check python checking for Python executable &quot;python&quot; in the PATH
  gyp verb `which` failed Error: not found: python
  gyp verb `which` failed     at getNotFoundError (/usr/src/app/node_modules/which/which.js:13:12)
  gyp verb `which` failed     at F (/usr/src/app/node_modules/which/which.js:68:19)
  gyp verb `which` failed     at E (/usr/src/app/node_modules/which/which.js:80:29)
  gyp verb `which` failed     at /usr/src/app/node_modules/which/which.js:89:16
  gyp verb `which` failed     at /usr/src/app/node_modules/isexe/index.js:42:5
  gyp verb `which` failed     at /usr/src/app/node_modules/isexe/mode.js:8:5
  gyp verb `which` failed     at FSReqCallback.oncomplete (node:fs:183:21)
  gyp verb `which` failed  python Error: not found: python
  gyp verb `which` failed     at getNotFoundError (/usr/src/app/node_modules/which/which.js:13:12)
  gyp verb `which` failed     at F (/usr/src/app/node_modules/which/which.js:68:19)
  gyp verb `which` failed     at E (/usr/src/app/node_modules/which/which.js:80:29)
  gyp verb `which` failed     at /usr/src/app/node_modules/which/which.js:89:16
  gyp verb `which` failed     at /usr/src/app/node_modules/isexe/index.js:42:5
  gyp verb `which` failed     at /usr/src/app/node_modules/isexe/mode.js:8:5
  gyp verb `which` failed     at FSReqCallback.oncomplete (node:fs:183:21) {
  gyp verb `which` failed   code: 'ENOENT'
  gyp verb `which` failed }
  gyp ERR! configure error 
  gyp ERR! stack Error: Can't find Python executable &quot;python&quot;, you can set the PYTHON env variable.
  gyp ERR! stack     at PythonFinder.failNoPython (/usr/src/app/node_modules/node-gyp/lib/configure.js:484:19)
  gyp ERR! stack     at PythonFinder.&lt;anonymous&gt; (/usr/src/app/node_modules/node-gyp/lib/configure.js:406:16)
  gyp ERR! stack     at F (/usr/src/app/node_modules/which/which.js:68:16)
  gyp ERR! stack     at E (/usr/src/app/node_modules/which/which.js:80:29)
  gyp ERR! stack     at /usr/src/app/node_modules/which/which.js:89:16
  gyp ERR! stack     at /usr/src/app/node_modules/isexe/index.js:42:5
  gyp ERR! stack     at /usr/src/app/node_modules/isexe/mode.js:8:5
  gyp ERR! stack     at FSReqCallback.oncomplete (node:fs:183:21)
  gyp ERR! System Linux 5.4.0-1031-azure
  gyp ERR! command &quot;/usr/local/bin/node&quot; &quot;/usr/src/app/node_modules/node-gyp/bin/node-gyp.js&quot; &quot;rebuild&quot; &quot;--verbose&quot; &quot;--libsass_ext=&quot; &quot;--libsass_cflags=&quot; &quot;--libsass_ldflags=&quot; &quot;--libsass_library=&quot;
  gyp ERR! cwd /usr/src/app/node_modules/node-sass
  gyp ERR! node -v v15.0.0
  gyp ERR! node-gyp -v v3.8.0
  gyp ERR! not ok 
  Build failed with error code: 1
  info Visit https://yarnpkg.com/en/docs/cli/install for documentation about this command.
  The command '/bin/sh -c yarn cache clean &amp;&amp; yarn --update-checksums' returned a non-zero code: 1
  </code></pre>