如何在 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 pull
和 docker 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 函数。
目前我在 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 pull
和 docker 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 函数。