如何在 alpine linux (python3.8) 上安装特定版本的 python?

How do I install a specific version of python on alpine linux (python3.8)?

目前我在 gitlab 中使用 dind 配置
这对我来说很有效,可以通过 SAM 部署 docker 化的 lambda 函数。

这是我之前的脚本

   - apk add --no-cache curl jq
   - apk add --no-cache python3 python3-dev py3-setuptools
   - apk add py3-pip
   - apk add --no-cache build-base g++ make cmake unzip curl-dev
   - apk add --no-cache autoconf automake libtool libexecinfo-dev
   - apk add --no-cache git
   - pip3 install --no-cache --upgrade wheel
   - pip3 install awscli --upgrade
   - pip3 install aws-sam-cli --upgrade

我遇到了麻烦,因为 lambda 函数 python 版本是 3.8,sam builds 抱怨 docker gitlab 设置的版本不同,找不到 3.8

终于解决了 可能我缺乏上下文 我正在做一个 gitlab.yaml 文件来通过 SAM 在 AWS 中构建、测试和部署我的应用程序。

由于我的一个 lambda 函数是 docker 化的 lambda 函数,我需要 sam 能够将 docker 作为命令访问,这样它就可以 运行 docker pulldocker build
我使用的其他 lambda 函数 python3.8 作为 运行time 所以我用作基础图像的 docker 版本指向 https://dl-cdn.alpinelinux.org/alpine/v3.15/main/x86_64/ 所以每次安装东西apk 的版本是 3.15,其中有 python3.10。 一个解决方案是使用: image: docker:19.03.15-alpine3.13 作为具有服务 dind 的基本映像,如下所示:

image: docker:19.03.15-alpine3.13
## This will run a Docker daemon in a container (Docker-In-Docker), which will
## be available at thedockerhost:2375. If you make e.g. port 5000 public in Docker
## (`docker run -p 5000:5000 yourimage`) it will be exposed at thedockerhost:5000.
services:
  - name: docker:dind
    alias: thedockerhost

variables:
  # Tell docker CLI how to talk to Docker daemon; see
  # https://docs.gitlab.com/ee/ci/docker/using_docker_build.html#use-docker-in-docker-executor
  DOCKER_HOST: tcp://thedockerhost:2375/
  # DOCKER_HOST: tcp://docker:2375/
  # Use the overlays driver for improved performance:
  DOCKER_DRIVER: overlay2
  DOCKER_TLS_CERTDIR: ""
  REPOSITORY_URL: ######.dkr.ecr.region.amazonaws.com/
  REGION: us-east-2

deploy:
  stage: deploy
  before_script:
    - apk add --no-cache python3
    - apk add --no-cache curl jq
    - apk add --no-cache python3-dev py3-setuptools
    - apk add --no-cache py3-pip
    - apk add --no-cache py-pip
    - apk add --no-cache build-base g++ make cmake unzip curl-dev
    - apk add --no-cache autoconf automake libtool libexecinfo-dev
    - apk add --no-cache git
    - pip3 install --no-cache --upgrade wheel
    - pip3 install --no-cache awscli --upgrade
    - pip3 install --no-cache aws-sam-cli --upgrade
  script:
    - aws ecr get-login-password --region ${REGION} | docker login --username AWS --password-stdin ${REPOSITORY_URL}
    - sam build
    - sam deploy --no-confirm-changeset --no-fail-on-empty-changeset
  only:
    - master

这个 alphine 版本指向:
https://dl-cdn.alpinelinux.org/alpine/v3.13/main/x86_64/APKINDEX.tar.gz
这会安装 python3.8,现在 sam 能够 package/build 其余的 lambda 函数。