FROM debian:bullseye-slim AS builder ENV HTTPD_VERSION 2.4.32 ENV APR_VERSION 1.6.3 ENV APR_UTIL_VERSION 1.6.1 RUN apt-get update && apt-get install -y --no-install-recommends \ build-essential wget ca-certificates libpcre3-dev libssl-dev zlib1g-dev libexpat1-dev \ && rm -rf /var/lib/apt/lists/* WORKDIR /usr/src RUN wget --no-verbose "https://archive.apache.org/dist/httpd/httpd-${HTTPD_VERSION}.tar.gz" && \ wget --no-verbose "https://archive.apache.org/dist/apr/apr-${APR_VERSION}.tar.gz" && \ wget --no-verbose "https://archive.apache.org/dist/apr/apr-util-${APR_UTIL_VERSION}.tar.gz" && \ tar xzf "httpd-${HTTPD_VERSION}.tar.gz" && tar xzf "apr-${APR_VERSION}.tar.gz" && tar xzf "apr-util-${APR_UTIL_VERSION}.tar.gz" && \ mv "apr-${APR_VERSION}" "httpd-${HTTPD_VERSION}/srclib/apr" && mv "apr-util-${APR_UTIL_VERSION}" "httpd-${HTTPD_VERSION}/srclib/apr-util" WORKDIR /usr/src/httpd-${HTTPD_VERSION} RUN ./configure --prefix=/usr/local/apache2 --enable-mods-shared=all --enable-deflate \ --enable-proxy --enable-proxy-balancer --enable-proxy-http --with-included-apr RUN make && make install FROM debian:bullseye-slim RUN apt-get update && apt-get install -y --no-install-recommends \ libpcre3 libapr1 libaprutil1 libssl1.1 zlib1g libexpat1 \ supervisor python3 uwsgi uwsgi-plugin-python3 \ && rm -rf /var/lib/apt/lists/* COPY --from=builder /usr/local/apache2 /usr/local/apache2 RUN mkdir -p /var/www COPY supervisord.conf /etc/supervisor/conf.d/supervisord.conf COPY upstream.py /var/www/upstream.py RUN ln -sf /dev/stdout /usr/local/apache2/logs/access_log && \ ln -sf /dev/stderr /usr/local/apache2/logs/error_log RUN groupadd --system --gid 80 apache && \ useradd --system --gid apache --uid 80 --shell /bin/false --home /usr/local/apache2 apache RUN sed -i \ -e 's/^User daemon/User apache/' -e 's/^Group daemon/Group apache/' \ -e 's/^#ServerName www.example.com:80/ServerName localhost/' \ -e 's/^LogLevel warn/LogLevel info/' \ -e '\!LoadModule proxy_module modules/mod_proxy.so!s!^#\s*!!' \ -e '/LoadModule proxy_module modules\/mod_proxy.so/a LoadModule proxy_uwsgi_module modules/mod_proxy_uwsgi.so' \ /usr/local/apache2/conf/httpd.conf RUN <> /usr/local/apache2/conf/httpd.conf ProxyPass "/" "uwsgi://127.0.0.1:8080/" LimitRequestFieldSize 1048576 EOF ENV PATH /usr/local/apache2/bin:$PATH EXPOSE 80 CMD ["/usr/bin/supervisord", "-c", "/etc/supervisor/conf.d/supervisord.conf"]