2020-11-04 16:22:39 +01:00
|
|
|
ARG DOCKER_VERSION=19.03
|
2021-02-18 15:04:25 +01:00
|
|
|
ARG PYTHON_VERSION=3.7.10
|
2020-11-04 16:22:39 +01:00
|
|
|
|
|
|
|
ARG BUILD_ALPINE_VERSION=3.12
|
2020-10-20 17:54:19 +02:00
|
|
|
ARG BUILD_CENTOS_VERSION=7
|
2021-01-22 11:14:55 +01:00
|
|
|
ARG BUILD_DEBIAN_VERSION=slim-stretch
|
2020-11-04 16:22:39 +01:00
|
|
|
|
|
|
|
ARG RUNTIME_ALPINE_VERSION=3.12
|
2020-10-20 17:54:19 +02:00
|
|
|
ARG RUNTIME_CENTOS_VERSION=7
|
2021-01-22 11:14:55 +01:00
|
|
|
ARG RUNTIME_DEBIAN_VERSION=stretch-slim
|
2015-02-23 12:01:37 +01:00
|
|
|
|
2020-10-20 17:53:47 +02:00
|
|
|
ARG DISTRO=alpine
|
2015-02-25 14:52:55 +01:00
|
|
|
|
2019-04-10 21:05:02 +02:00
|
|
|
FROM docker:${DOCKER_VERSION} AS docker-cli
|
2015-09-16 22:45:26 +02:00
|
|
|
|
2019-04-10 21:05:02 +02:00
|
|
|
FROM python:${PYTHON_VERSION}-alpine${BUILD_ALPINE_VERSION} AS build-alpine
|
|
|
|
RUN apk add --no-cache \
|
|
|
|
bash \
|
|
|
|
build-base \
|
|
|
|
ca-certificates \
|
|
|
|
curl \
|
|
|
|
gcc \
|
|
|
|
git \
|
|
|
|
libc-dev \
|
|
|
|
libffi-dev \
|
|
|
|
libgcc \
|
|
|
|
make \
|
|
|
|
musl-dev \
|
|
|
|
openssl \
|
|
|
|
openssl-dev \
|
|
|
|
zlib-dev
|
|
|
|
ENV BUILD_BOOTLOADER=1
|
2015-08-25 00:54:59 +02:00
|
|
|
|
2019-04-10 21:05:02 +02:00
|
|
|
FROM python:${PYTHON_VERSION}-${BUILD_DEBIAN_VERSION} AS build-debian
|
2019-09-21 17:40:58 +02:00
|
|
|
RUN apt-get update && apt-get install --no-install-recommends -y \
|
2019-04-10 21:05:02 +02:00
|
|
|
curl \
|
|
|
|
gcc \
|
|
|
|
git \
|
|
|
|
libc-dev \
|
2019-09-21 17:40:58 +02:00
|
|
|
libffi-dev \
|
2021-01-22 11:14:55 +01:00
|
|
|
libgcc-6-dev \
|
2019-09-21 17:40:58 +02:00
|
|
|
libssl-dev \
|
2019-04-10 21:05:02 +02:00
|
|
|
make \
|
|
|
|
openssl \
|
2019-09-21 17:40:58 +02:00
|
|
|
zlib1g-dev
|
2014-07-30 22:11:11 +02:00
|
|
|
|
2020-10-20 17:54:19 +02:00
|
|
|
FROM centos:${BUILD_CENTOS_VERSION} AS build-centos
|
|
|
|
RUN yum install -y \
|
|
|
|
gcc \
|
|
|
|
git \
|
|
|
|
libffi-devel \
|
|
|
|
make \
|
|
|
|
openssl \
|
|
|
|
openssl-devel
|
|
|
|
WORKDIR /tmp/python3/
|
|
|
|
ARG PYTHON_VERSION
|
|
|
|
RUN curl -L https://www.python.org/ftp/python/${PYTHON_VERSION}/Python-${PYTHON_VERSION}.tgz | tar xzf - \
|
|
|
|
&& cd Python-${PYTHON_VERSION} \
|
|
|
|
&& ./configure --enable-optimizations --enable-shared --prefix=/usr LDFLAGS="-Wl,-rpath /usr/lib" \
|
|
|
|
&& make altinstall
|
|
|
|
RUN alternatives --install /usr/bin/python python /usr/bin/python2.7 50
|
2020-11-30 10:13:52 +01:00
|
|
|
RUN alternatives --install /usr/bin/python python /usr/bin/python$(echo "${PYTHON_VERSION%.*}") 60
|
2020-10-20 17:54:19 +02:00
|
|
|
RUN curl https://bootstrap.pypa.io/get-pip.py | python -
|
|
|
|
|
2020-10-20 17:53:47 +02:00
|
|
|
FROM build-${DISTRO} AS build
|
2019-04-10 21:05:02 +02:00
|
|
|
ENTRYPOINT ["sh", "/usr/local/bin/docker-compose-entrypoint.sh"]
|
|
|
|
WORKDIR /code/
|
2020-10-20 17:53:47 +02:00
|
|
|
COPY docker-compose-entrypoint.sh /usr/local/bin/
|
|
|
|
COPY --from=docker-cli /usr/local/bin/docker /usr/local/bin/docker
|
2020-10-21 10:45:41 +02:00
|
|
|
RUN pip install \
|
2021-01-22 11:14:55 +01:00
|
|
|
virtualenv==20.4.0 \
|
|
|
|
tox==3.21.2
|
2020-10-21 10:45:41 +02:00
|
|
|
COPY requirements-dev.txt .
|
2020-06-03 18:39:22 +02:00
|
|
|
COPY requirements-indirect.txt .
|
2019-04-10 21:05:02 +02:00
|
|
|
COPY requirements.txt .
|
2020-10-21 10:45:41 +02:00
|
|
|
RUN pip install -r requirements.txt -r requirements-indirect.txt -r requirements-dev.txt
|
2019-04-10 21:05:02 +02:00
|
|
|
COPY .pre-commit-config.yaml .
|
|
|
|
COPY tox.ini .
|
|
|
|
COPY setup.py .
|
|
|
|
COPY README.md .
|
|
|
|
COPY compose compose/
|
2021-01-22 11:14:55 +01:00
|
|
|
RUN tox -e py37 --notest
|
2019-04-10 21:05:02 +02:00
|
|
|
COPY . .
|
|
|
|
ARG GIT_COMMIT=unknown
|
|
|
|
ENV DOCKER_COMPOSE_GITSHA=$GIT_COMMIT
|
|
|
|
RUN script/build/linux-entrypoint
|
2015-08-24 21:15:08 +02:00
|
|
|
|
2020-10-20 17:53:47 +02:00
|
|
|
FROM scratch AS bin
|
|
|
|
ARG TARGETARCH
|
|
|
|
ARG TARGETOS
|
|
|
|
COPY --from=build /usr/local/bin/docker-compose /docker-compose-${TARGETOS}-${TARGETARCH}
|
|
|
|
|
2019-04-10 21:05:02 +02:00
|
|
|
FROM alpine:${RUNTIME_ALPINE_VERSION} AS runtime-alpine
|
|
|
|
FROM debian:${RUNTIME_DEBIAN_VERSION} AS runtime-debian
|
2020-10-20 17:54:19 +02:00
|
|
|
FROM centos:${RUNTIME_CENTOS_VERSION} AS runtime-centos
|
2020-10-20 17:53:47 +02:00
|
|
|
FROM runtime-${DISTRO} AS runtime
|
2019-04-10 21:05:02 +02:00
|
|
|
COPY docker-compose-entrypoint.sh /usr/local/bin/
|
|
|
|
ENTRYPOINT ["sh", "/usr/local/bin/docker-compose-entrypoint.sh"]
|
|
|
|
COPY --from=docker-cli /usr/local/bin/docker /usr/local/bin/docker
|
|
|
|
COPY --from=build /usr/local/bin/docker-compose /usr/local/bin/docker-compose
|