Changed Dockerfile to resolve deps using pipenv/Pipefile(.lock) before pip3->setup.py for httpbin.

Also added Pipfile(.lock) prior to the remaining source, improving Docker image cacheability.

Git is also required to fetch pyyaml.

This results in more deterministic and reproducible image builds, since httpbin dependencies
are installed using locked versions from Pipfile.lock before httpbin is itself installed.

Fixed #493.
This commit is contained in:
Brett Randall
2018-07-27 14:41:58 +10:00
parent 7b3b70dbca
commit be1413fb02
+11 -5
View File
@@ -5,12 +5,18 @@ LABEL version="0.9.2"
LABEL description="A simple HTTP service."
LABEL org.kennethreitz.vendor="Kenneth Reitz"
RUN apt update -y && apt install python3-pip -y
ENV LC_ALL=C.UTF-8
ENV LANG=C.UTF-8
RUN apt update -y && apt install python3-pip git -y && pip3 install --no-cache-dir pipenv
ADD Pipfile Pipfile.lock /httpbin/
WORKDIR /httpbin
RUN /bin/bash -c "pip3 install --no-cache-dir -r <(pipenv lock -r)"
ADD . /httpbin
RUN pip3 install --no-cache-dir /httpbin
EXPOSE 80
ADD . /httpbin
RUN pip3 install --no-cache-dir gunicorn /httpbin
CMD ["gunicorn", "-b", "0.0.0.0:80", "httpbin:app", "-k", "gevent"]