1
0
mirror of https://github.com/certbot/certbot.git synced 2026-01-26 07:41:33 +03:00
Files
certbot/tools/docker/core/Dockerfile
Adrien Ferrand 3a997a5631 Install pipstrap to pin setuptools/pip/wheels, since setuptools and pip continues to play with us. (#23)
So, setuptools broke the installation setup, by removing a deprecated API that is still used by some of our dependencies (see pypa/setuptools#2017)

This PR fixes the Docker build by using pipstrap to pin pip/setuptools/wheels, like it is done in several critical places (certbot-auto, ...).

An issue in certbot is opened to fix more generally the problem in most recent versions of setuptools: certbot/certbot#7976

It rebuilt locally all dockers (certbot + dns plugins) for the three architectures, and all have passed.
2020-05-05 17:10:51 -07:00

55 lines
1.9 KiB
Docker

# Docker Arch (amd64, arm32v6, ...)
ARG TARGET_ARCH
FROM ${TARGET_ARCH}/python:3.8-alpine3.11
# Qemu Arch (x86_64, arm, ...)
ARG QEMU_ARCH
ENV QEMU_ARCH=${QEMU_ARCH}
COPY qemu-${QEMU_ARCH}-static /usr/bin/
ARG CERTBOT_VERSION
ENV CERTBOT_VERSION=${CERTBOT_VERSION}
ENTRYPOINT [ "certbot" ]
EXPOSE 80 443
VOLUME /etc/letsencrypt /var/lib/letsencrypt
WORKDIR /opt/certbot
# Retrieve certbot code
RUN mkdir -p src \
&& wget -O certbot-${CERTBOT_VERSION}.tar.gz https://github.com/certbot/certbot/archive/v${CERTBOT_VERSION}.tar.gz \
&& tar xf certbot-${CERTBOT_VERSION}.tar.gz \
&& cp certbot-${CERTBOT_VERSION}/CHANGELOG.md certbot-${CERTBOT_VERSION}/README.rst src/ \
&& cp certbot-${CERTBOT_VERSION}/letsencrypt-auto-source/pieces/dependency-requirements.txt . \
&& cp certbot-${CERTBOT_VERSION}/letsencrypt-auto-source/pieces/pipstrap.py . \
&& cp -r certbot-${CERTBOT_VERSION}/tools tools \
&& cp -r certbot-${CERTBOT_VERSION}/acme src/acme \
&& cp -r certbot-${CERTBOT_VERSION}/certbot src/certbot \
&& rm -rf certbot-${CERTBOT_VERSION}.tar.gz certbot-${CERTBOT_VERSION}
# Generate constraints file to pin dependency versions
RUN cat dependency-requirements.txt | tools/strip_hashes.py > unhashed_requirements.txt \
&& cat tools/dev_constraints.txt unhashed_requirements.txt | tools/merge_requirements.py > docker_constraints.txt
# Install certbot runtime dependencies
RUN apk add --no-cache --virtual .certbot-deps \
libffi \
libssl1.1 \
openssl \
ca-certificates \
binutils
# Install certbot from sources
RUN apk add --no-cache --virtual .build-deps \
gcc \
linux-headers \
openssl-dev \
musl-dev \
libffi-dev \
&& python pipstrap.py \
&& pip install -r dependency-requirements.txt \
&& pip install --no-cache-dir --no-deps \
--editable src/acme \
--editable src/certbot \
&& apk del .build-deps