Как создать пользовательское изображение с помощью «python:alpine» для использования с AWS Lambda?

#docker #aws-lambda #dockerfile #alpine

Вопрос:

На этой странице описано создание образа Docker для использования с Лямбда-кодом с помощью «python:buster»

https://docs.aws.amazon.com/lambda/latest/dg/images-create.html#images-create-from-alt

Я хотел бы сделать то же самое с ‘python:alpine’

но возникают проблемы при попытке установить «libcurl4-openssl-dev»


Кто-нибудь успешно создал изображение «python:alpine» для использования в лямбда-коде?

Комментарии:

1. Разве это не пакет openssl-dev в репозитории alpine? У Alpine другое репозиторий пакетов, чем у Debian.

Ответ №1:

Этот пакет «libcurl4-openssl-dev» принадлежит семейству debian/ubuntu, которого нет в дистрибутиве Alpine linux, но только как libcurl. Кстати, вы можете искать альпийские пакеты здесь https://pkgs.alpinelinux.org/packages

Если вы хотите создать пользовательскую среду выполнения Lambda Python с помощью ALPINE, этот файл Dockerfile может оказаться полезным. Я сделал небольшие изменения, чтобы вписаться в мир alpine linux.

 # Define function directory
ARG FUNCTION_DIR="/function"

FROM python:alpine3.12 AS python-alpine 
RUN apk add --no-cache 
    libstdc  

FROM python-alpine as build-image

# Install aws-lambda-cpp build dependencies
RUN apk add --no-cache 
    build-base 
    libtool  
    autoconf  
    automake  
    libexecinfo-dev  
    make 
    cmake  
    libcurl

# Include global arg in this stage of the build
ARG FUNCTION_DIR
# Create function directory
RUN mkdir -p ${FUNCTION_DIR}

# Copy function code
COPY app/* ${FUNCTION_DIR}

# Install the runtime interface client
RUN python -m pip install --upgrade pip
RUN python -m pip install 
        --target ${FUNCTION_DIR} 
        awslambdaric

# Multi-stage build: grab a fresh copy of the base image
FROM python-alpine

# Include global arg in this stage of the build
ARG FUNCTION_DIR
# Set working directory to function root directory
WORKDIR ${FUNCTION_DIR}

# Copy in the build image dependencies
COPY --from=build-image ${FUNCTION_DIR} ${FUNCTION_DIR}

ENTRYPOINT [ "/usr/local/bin/python", "-m", "awslambdaric" ]
CMD [ "app.handler" ]
 

Комментарии:

1. потрясающе, я попробую это сделать