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?
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