serverless-python-requirements icon indicating copy to clipboard operation
serverless-python-requirements copied to clipboard

dockerizePip in Windows does not resolve HOME directory

Open dhrimov opened this issue 4 years ago • 1 comments

When using dockerized requirements, the docker run command is not correct. Older version (1.83.2) had the correct path like:

Serverless: Running docker run --rm -v C\:/Project/dhrimov/dhrimov-blog-lambdas/.serverless/test1/requirements\:/var/task\:z -v C:\\Users\\dmytr/.ssh/id_rsa\:/root/.ssh/id_rsa\:z -v C:\\Users\\dmytr/.ssh/known_hosts\:/root/.ssh/know
n_hosts\:z -v undefined\:/tmp/ssh_sock\:z -e SSH_AUTH_SOCK\=/tmp/ssh_sock -u 0 lambci/lambda\:build-python3.6 python -m pip install -t /var/task/ -r /var/task/requirements.txt...
serverless.yml
service: dhrimov-blog-lambdas

frameworkVersion: ">=2.48.0 <3.0.0"

resources:
  Description: Lambdas that handle all blog interactions

provider:
  stackName: ${opt:stage, self:provider.stage}-${self:service}
  stackTags:
    tier: ${opt:stage, self:provider.stage}
    managedBy: serverless
  name: aws
  runtime: python3.6
  region: eu-central-1
  stage: dev
  deploymentBucket:
    name: ***

plugins:
  - serverless-plugin-git-variables
  - serverless-apigw-binary
  - serverless-offline
  - serverless-prune-plugin
  - serverless-python-requirements

package:
  individually: true
  excludeDevDependencies: false
  exclude:
    - .tox/**
    - env/**
    - node_modules/**

    - "**/.coverage"
    - "**/__pycache__/**"
    - "**/env/**"
    - "**/tests/**"

functions:

  dhrimov-blog-test1:
    handler: main.handler
    module: test1
    name: ${opt:stage, self:provider.stage}-dhrimov-blog-test1
    memorySize: 128
    timeout: 10
    description: ${self:service}
    events:
      - http:
          path: test1
          method: get
          cors: true

custom:
  prune:
    automatic: true
    number: 5

  apigwBinary:
    types:
      - "*/*"

  pythonRequirements:
    zip: true
    dockerizePip: true
    dockerSsh: true
    useDownloadCache: false
    useStaticCache: false
    invalidateCaches: true
sls deploy --stage dev output
Serverless: Adding Python requirements helper to test1...
Serverless: Adding Python requirements helper to test2...
Serverless: Generated requirements from C:\Project\dhrimov\dhrimov-blog-lambdas\test1\requirements.txt in C:\Project\dhrimov\dhrimov-blog-lambdas\.serverless\test1\requirements.txt...
Serverless: Installing requirements from C:\Project\dhrimov\dhrimov-blog-lambdas\.serverless\test1\requirements\requirements.txt ...
Serverless: Docker Image: lambci/lambda:build-python3.6
Serverless: Running docker run --rm -v C\:/Project/dhrimov/dhrimov-blog-lambdas/.serverless/test1/requirements\:/var/task\:z -v **undefined/.ssh/id_rsa**\:/root/.ssh/id_rsa\:z -v undefined/.ssh/known_hosts\:/root/.ssh/known_hosts\:z -v
undefined\:/tmp/ssh_sock\:z -e SSH_AUTH_SOCK\=/tmp/ssh_sock -u 0 lambci/lambda\:build-python3.6 python -m pip install -t /var/task/ -r /var/task/requirements.txt...

 Error ---------------------------------------------------

  Error: STDOUT:

  STDERR: docker: Error response from daemon: create undefined/.ssh/id_rsa: "undefined/.ssh/id_rsa" includes invalid characters for a local volume name, only "[a-zA-Z0-9][a-zA-Z0-9_.-]" are allowed. If you intended to pass a host di
rectory, use absolute path.
  See 'docker run --help'.

      at C:\Project\dhrimov\dhrimov-blog-lambdas\node_modules\serverless-python-requirements\lib\pip.js:331:13
      at Array.forEach (<anonymous>)
      at installRequirements (C:\Project\dhrimov\dhrimov-blog-lambdas\node_modules\serverless-python-requirements\lib\pip.js:318:28)
      at installRequirementsIfNeeded (C:\Project\dhrimov\dhrimov-blog-lambdas\node_modules\serverless-python-requirements\lib\pip.js:576:3)
      at C:\Project\dhrimov\dhrimov-blog-lambdas\node_modules\serverless-python-requirements\lib\pip.js:619:35
      at Array.map (<anonymous>)
      at ServerlessPythonRequirements.installAllRequirements (C:\Project\dhrimov\dhrimov-blog-lambdas\node_modules\serverless-python-requirements\lib\pip.js:613:8)
      at ServerlessPythonRequirements.tryCatcher (C:\Project\dhrimov\dhrimov-blog-lambdas\node_modules\bluebird\js\release\util.js:16:23)
      at Promise._settlePromiseFromHandler (C:\Project\dhrimov\dhrimov-blog-lambdas\node_modules\bluebird\js\release\promise.js:547:31)
      at Promise._settlePromise (C:\Project\dhrimov\dhrimov-blog-lambdas\node_modules\bluebird\js\release\promise.js:604:18)
      at Promise._settlePromise0 (C:\Project\dhrimov\dhrimov-blog-lambdas\node_modules\bluebird\js\release\promise.js:649:10)
      at Promise._settlePromises (C:\Project\dhrimov\dhrimov-blog-lambdas\node_modules\bluebird\js\release\promise.js:729:18)
      at Promise._fulfill (C:\Project\dhrimov\dhrimov-blog-lambdas\node_modules\bluebird\js\release\promise.js:673:18)
      at MappingPromiseArray.PromiseArray._resolve (C:\Project\dhrimov\dhrimov-blog-lambdas\node_modules\bluebird\js\release\promise_array.js:127:19)
      at MappingPromiseArray._promiseFulfilled (C:\Project\dhrimov\dhrimov-blog-lambdas\node_modules\bluebird\js\release\map.js:108:18)
      at Promise._settlePromise (C:\Project\dhrimov\dhrimov-blog-lambdas\node_modules\bluebird\js\release\promise.js:609:26)
      at Promise._settlePromise0 (C:\Project\dhrimov\dhrimov-blog-lambdas\node_modules\bluebird\js\release\promise.js:649:10)
      at Promise._settlePromises (C:\Project\dhrimov\dhrimov-blog-lambdas\node_modules\bluebird\js\release\promise.js:729:18)
      at Promise._fulfill (C:\Project\dhrimov\dhrimov-blog-lambdas\node_modules\bluebird\js\release\promise.js:673:18)
      at C:\Project\dhrimov\dhrimov-blog-lambdas\node_modules\bluebird\js\release\nodeback.js:42:21
      at C:\Project\dhrimov\dhrimov-blog-lambdas\node_modules\graceful-fs\polyfills.js:247:20
      at FSReqCallback.oncomplete (fs.js:154:23)

     For debugging logs, run again after setting the "SLS_DEBUG=*" environment variable.

  Get Support --------------------------------------------
     Docs:          docs.serverless.com
     Bugs:          github.com/serverless/serverless/issues
     Issues:        forum.serverless.com

  Your Environment Information ---------------------------
     Operating System:          win32
     Node Version:              12.16.1
     Framework Version:         2.48.0 (local)
     Plugin Version:            5.4.2
     SDK Version:               4.2.3
     Components Version:        3.12.0

Installed version

Framework Core: 2.48.0 (local)
Plugin: 5.4.2
SDK: 4.2.3
Components: 3.12.0

dhrimov avatar Jun 24 '21 19:06 dhrimov

what fixed this for me was setting a env variable in my powershell by running $env:HOME=C:/Users/<user-name>

tharun634 avatar Sep 10 '21 11:09 tharun634