Skip to content

Commit

Permalink
Changed Dockerfile to resolve deps using pipenv/Pipefile(.lock) befor…
Browse files Browse the repository at this point in the history
…e 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.
  • Loading branch information
javabrett committed Oct 25, 2018
1 parent 7b3b70d commit be1413f
Showing 1 changed file with 9 additions and 3 deletions.
12 changes: 9 additions & 3 deletions Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -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

EXPOSE 80
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

RUN pip3 install --no-cache-dir gunicorn /httpbin
EXPOSE 80

CMD ["gunicorn", "-b", "0.0.0.0:80", "httpbin:app", "-k", "gevent"]

0 comments on commit be1413f

Please sign in to comment.