Dockerfile 2.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  1. ARG DOCKER_VERSION=18.09.7
  2. ARG PYTHON_VERSION=3.7.4
  3. ARG BUILD_ALPINE_VERSION=3.10
  4. ARG BUILD_DEBIAN_VERSION=slim-stretch
  5. ARG RUNTIME_ALPINE_VERSION=3.10.1
  6. ARG RUNTIME_DEBIAN_VERSION=stretch-20190812-slim
  7. ARG BUILD_PLATFORM=alpine
  8. FROM docker:${DOCKER_VERSION} AS docker-cli
  9. FROM python:${PYTHON_VERSION}-alpine${BUILD_ALPINE_VERSION} AS build-alpine
  10. RUN apk add --no-cache \
  11. bash \
  12. build-base \
  13. ca-certificates \
  14. curl \
  15. gcc \
  16. git \
  17. libc-dev \
  18. libffi-dev \
  19. libgcc \
  20. make \
  21. musl-dev \
  22. openssl \
  23. openssl-dev \
  24. python2 \
  25. python2-dev \
  26. zlib-dev
  27. ENV BUILD_BOOTLOADER=1
  28. FROM python:${PYTHON_VERSION}-${BUILD_DEBIAN_VERSION} AS build-debian
  29. RUN apt-get update && apt-get install --no-install-recommends -y \
  30. curl \
  31. gcc \
  32. git \
  33. libc-dev \
  34. libffi-dev \
  35. libgcc-6-dev \
  36. libssl-dev \
  37. make \
  38. openssl \
  39. python2.7-dev \
  40. zlib1g-dev
  41. FROM build-${BUILD_PLATFORM} AS build
  42. COPY docker-compose-entrypoint.sh /usr/local/bin/
  43. ENTRYPOINT ["sh", "/usr/local/bin/docker-compose-entrypoint.sh"]
  44. COPY --from=docker-cli /usr/local/bin/docker /usr/local/bin/docker
  45. WORKDIR /code/
  46. # FIXME(chris-crone): virtualenv 16.3.0 breaks build, force 16.2.0 until fixed
  47. RUN pip install virtualenv==16.2.0
  48. RUN pip install tox==2.9.1
  49. COPY requirements.txt .
  50. COPY requirements-dev.txt .
  51. COPY .pre-commit-config.yaml .
  52. COPY tox.ini .
  53. COPY setup.py .
  54. COPY README.md .
  55. COPY compose compose/
  56. RUN tox --notest
  57. COPY . .
  58. ARG GIT_COMMIT=unknown
  59. ENV DOCKER_COMPOSE_GITSHA=$GIT_COMMIT
  60. RUN script/build/linux-entrypoint
  61. FROM alpine:${RUNTIME_ALPINE_VERSION} AS runtime-alpine
  62. FROM debian:${RUNTIME_DEBIAN_VERSION} AS runtime-debian
  63. FROM runtime-${BUILD_PLATFORM} AS runtime
  64. COPY docker-compose-entrypoint.sh /usr/local/bin/
  65. ENTRYPOINT ["sh", "/usr/local/bin/docker-compose-entrypoint.sh"]
  66. COPY --from=docker-cli /usr/local/bin/docker /usr/local/bin/docker
  67. COPY --from=build /usr/local/bin/docker-compose /usr/local/bin/docker-compose