docker 使用gitlab-ci部署无服务器时出现问题

t3psigkw  于 2022-12-11  发布在  Docker
关注(0)|答案(1)|浏览(160)

当我尝试在gitlab-ci上使用serverless将我的flask应用部署为lambda函数时,出现以下错误。

Error: spawn python3.8 ENOENT
    at Process.ChildProcess._handle.onexit (internal/child_process.js:268:19)
    at onErrorNT (internal/child_process.js:470:16)
    at processTicksAndRejections (internal/process/task_queues.js:84:21)
Cleaning up project directory and file based variables
ERROR: Job failed: exit code 1

然而,当我在本地运行命令sls deploy时,它工作正常。
下面是我的serverless.yml

service: serverless-flask

plugins:
  - serverless-python-requirements
  - serverless-wsgi

custom:
  wsgi:
    app: app.app
    packRequirements: false
  pythonRequirements:
    dockerizePip: non-linux

provider:
  name: aws
  runtime: python3.8
  region: eu-west-3
  memorySize: 256
  timeout: 15

functions:
  app:
    handler: wsgi_handler.handler
    environment: ${file(env.${opt:stage, self:provider.stage}.json)}
    events:
      - http: ANY /
      - http: ANY /{proxy+}

下面是我的gitlab-ci.yml

image: ubuntu:latest

stages:
  - deploy

dev:
  only:
    - develop
  stage: deploy
  before_script:
    - apt-get update
    - ARG DEBIAN_FRONTEND=noninteractive apt-get install -y software-properties-common && add-apt-repository ppa:deadsnakes/ppa && apt-get update && apt-get install -y python3.8 python3-pip && rm -rf /var/lib/apt/lists/*
    - apt update
    - apt install -y nodejs npm
    - npm install -g serverless
    - npm install
  script:
    - serverless deploy --stage dev
  environment: dev

我尝试了不同的docker图像,如python,节点,ubuntu,但我不能使它工作。

waxmsbnn

waxmsbnn1#

我正在通过github操作进行无服务器部署,遇到了同样的错误信息。希望这对你有帮助,如果没有,我想它会帮助其他人。
看起来serverless-python-requirements插件将尝试派生provider.runtime中的任何内容,因此在您的情况下(和我的情况下)python3.8
您可以在serverless.yml中覆盖此设置,如下所示:

custom:
  pythonRequirements:
    pythonBin: python

如果你的图像有一个'python'可执行文件,它将使用这个,它应该工作。我意识到,尽管事实上我已经安装了正确的目标python版本(在我的情况下与行动/setup-python),插件不会找到它,所以我认为它是运行在某个单独的地方?
一些关注SO/github问题的人说,他们通过将provider.runtime修改为python3.7或python3.9来修复这个问题,如果他们的映像有相应的可执行文件,这是有意义的。

相关问题