Search code examples
pythondockerpipdockerfileaws-sam-cli

pip install of aws-sam-cli package with python3.7 version


In the below docker file:

FROM alpine:latest

ENV HOME /home/samcli
ENV PATH $HOME/.local/bin:$PATH

RUN mkdir /root/bin /aws; \
    apk add --no-cache groff less bash python jq curl py-pip tzdata

RUN ln -fs /usr/share/zoneinfo/Etc/UTC /etc/localtime

RUN apk add --no-cache --virtual .build-deps gcc python2-dev python3-dev linux-headers musl-dev && \
    pip install --upgrade pip; \
    adduser samcli -Du 5566; \
    chown -R samcli $HOME;

USER samcli

WORKDIR $HOME

RUN pip install --user --upgrade awscli aws-sam-cli;

USER root

RUN apk del .build-deps; \
    rm -rf /var/cache/apk/*

Layer(RUN pip install --user --upgrade awscli aws-sam-cli;) is installing with python 2.7, despite image has python3.7 installed.

I see below deprecation error when installing python package:

Step 9/11 : RUN pip install --user --upgrade awscli aws-sam-cli;

DEPRECATION: Python 2.7 will reach the end of its life on January 1st, 2020. Please upgrade your Python as Python 2.7 won't be maintained after that date. A future version of pip will drop support for Python 2.7. More details about Python 2 support in pip, can be found at https://pip.pypa.io/en/latest/development/release-process/


How to install aws package with python3.7? because below command is using python2

pip install --user --upgrade awscli aws-sam-cli;


Solution

  • I would recommend using python offical image based on alpine so you will do not need to maintain and install the python version. Below base image is base on alpine 3.9 and python version is 3.7

    FROM python:3.7-alpine3.9
    
    ENV HOME /home/samcli
    ENV PATH $HOME/.local/bin:$PATH
    RUN ln -fs /usr/share/zoneinfo/Etc/UTC /etc/localtime
    RUN apk add --no-cache --virtual .build-deps python2-dev  python3-dev gcc linux-headers musl-dev && \
        adduser samcli -Du 5566; \
        chown -R samcli $HOME;
    RUN apk add --no-cache groff less bash jq curl py-pip tzdata
    USER samcli
    
    WORKDIR $HOME
    
    RUN pip install --user --upgrade awscli aws-sam-cli;
    USER root
    
    RUN apk del .build-deps; \
        rm -rf /var/cache/apk/*