Search code examples
dockerdockerfileaws-sam-cliaws-sam

Dockerfile - Could not find a version that satisfies the requirement serverlessrepo==0.1.5


Below is the Dockerfile for aws sam:

FROM buildpack-deps:stable
ARG PYTHON_VERSION=3.7.4


# Update and allow for apt over HTTPS
RUN apt-get update && \
  apt-get install -y apt-utils
RUN apt-get install -y apt-transport-https

# download and build Python 3.7, install basic Python libraries
# (this predates pipenv so a mixture of dependencies)
ADD requirements.txt /requirements.txt
RUN cd /usr/src && \
  wget https://www.python.org/ftp/python/${PYTHON_VERSION}/Python-${PYTHON_VERSION}.tgz && \
  tar xzf Python-${PYTHON_VERSION}.tgz && \
  cd Python-${PYTHON_VERSION} && \
  ./configure --enable-optimizations && \
  make altinstall && \
  apt-get install -y python3-pip && \
  pip3 install -r /requirements.txt

RUN pip3 install awscli --upgrade --user && \
    pip3 install --user aws-sam-cli

that gave error:

ERROR: Could not find a version that satisfies the requirement serverlessrepo==0.1.5 (from aws-sam-cli) (from versions: 0.1.6, 0.1.7, 0.1.8, 0.1.9)
ERROR: No matching distribution found for serverlessrepo==0.1.5 (from aws-sam-cli)

The command '/bin/sh -c pip3 install awscli --upgrade --user &&     pip3 install --user aws-sam-cli' returned a non-zero code: 1

How to install serverlessrepo version 0.1.5?


Solution

  • SAM CLI supports Python2.7, 3.6, and 3.7 and your docker image come with python3.5. The workaround can be something below or update the base version from your base docker image.

    FROM buildpack-deps:stable
    
    # Update and allow for apt over HTTPS
    RUN apt-get update && \
      apt-get install -y apt-utils
    RUN apt-get install -y apt-transport-https
    
    # Install python3
    RUN apt-get update \
      && apt-get install -y python3-pip python3-dev \
      && cd /usr/local/bin \
      && ln -s /usr/bin/python3 python \
      && pip3 install --upgrade pip
    
    RUN pip3 install awscli --upgrade --user 
    RUN python --version
    RUN apt-get install python-pip  -y
    RUN python2.7 -m pip install aws-sam-cli
    

    Update: The base image changed to buildpack-deps:buster

    FROM buildpack-deps:buster
    # Update and allow for apt over HTTPS
    RUN apt-get update && \
      apt-get install -y apt-utils
    RUN apt-get install -y apt-transport-https
    RUN apt update -y 
    RUN apt install python3-pip -y
    RUN pip3 install awscli --upgrade --ignore-installed six
    RUN python3.7 -m pip install aws-sam-cli
    RUN  rm /usr/bin/python
    RUN ln -s /usr/bin/python3.7 /usr/bin/python
    

    enter image description here