# syntax=docker/dockerfile:1 # ============================================================================= # mod_reqin_log - Dockerfile de packaging unifié (DEB + RPM avec fpm) # ============================================================================= # ============================================================================= # Stage 1: Builder - Compilation du module Apache # ============================================================================= FROM rockylinux:8 AS builder # Install build dependencies RUN dnf install -y epel-release && \ dnf install -y \ gcc \ make \ httpd \ httpd-devel \ apr-devel \ apr-util-devel \ python3 \ curl \ redhat-rpm-config \ && dnf clean all # Set working directory WORKDIR /build # Copy source files COPY src/ src/ COPY Makefile Makefile COPY conf/ conf/ # Build the module RUN make APXS=/usr/bin/apxs # Verify module was built RUN ls -la modules/mod_reqin_log.so # ============================================================================= # Stage 2: Package builder - fpm pour DEB et RPM # ============================================================================= FROM ruby:3.2-bookworm AS package-builder WORKDIR /package # Install fpm and Apache dev packages RUN apt-get update && apt-get install -y --no-install-recommends \ rpm \ dpkg-dev \ fakeroot \ apache2-dev \ apache2 \ && rm -rf /var/lib/apt/lists/* \ && gem install fpm -v 1.16.0 # Copy binary from builder COPY --from=builder /build/modules/mod_reqin_log.so /tmp/pkgroot/usr/lib/apache2/modules/mod_reqin_log.so COPY --from=builder /build/conf/mod_reqin_log.conf /tmp/pkgroot/etc/apache2/conf-available/mod_reqin_log.conf # Set permissions RUN chmod 755 /tmp/pkgroot/usr/lib/apache2/modules/mod_reqin_log.so && \ chmod 644 /tmp/pkgroot/etc/apache2/conf-available/mod_reqin_log.conf # Build DEB package (for Debian/Ubuntu) ARG VERSION=1.0.0 ARG ARCH=amd64 RUN mkdir -p /packages/deb && \ fpm -s dir -t deb \ -n libapache2-mod-reqin-log \ -v "${VERSION}" \ -C /tmp/pkgroot \ --architecture "${ARCH}" \ --description "Apache HTTPD module for logging HTTP requests as JSON to Unix socket" \ --url "https://github.com/example/mod_reqin_log" \ --license "Apache-2.0" \ --vendor "Developer " \ --maintainer "Developer " \ --depends "apache2" \ -p /packages/deb/libapache2-mod-reqin-log_${VERSION}_${ARCH}.deb \ usr/lib/apache2/modules/mod_reqin_log.so \ etc/apache2/conf-available/mod_reqin_log.conf # Build RPM package (for Rocky Linux/RHEL/CentOS) ARG DIST=el8 RUN mkdir -p /packages/rpm && \ fpm -s dir -t rpm \ -n mod_reqin_log \ -v "${VERSION}" \ -C /tmp/pkgroot \ --architecture "x86_64" \ --description "Apache HTTPD module for logging HTTP requests as JSON to Unix socket" \ --url "https://github.com/example/mod_reqin_log" \ --license "Apache-2.0" \ --vendor "Developer " \ --depends "httpd" \ -p /packages/rpm/mod_reqin_log-${VERSION}-1.x86_64.rpm \ usr/lib/apache2/modules/mod_reqin_log.so \ etc/apache2/conf-available/mod_reqin_log.conf # ============================================================================= # Stage 3: Output - Image finale avec les packages # ============================================================================= FROM alpine:latest AS output WORKDIR /packages COPY --from=package-builder /packages/deb/*.deb /packages/deb/ COPY --from=package-builder /packages/rpm/*.rpm /packages/rpm/ CMD ["sh", "-c", "echo '=== DEB Packages ===' && ls -la /packages/deb/ && echo '' && echo '=== RPM Packages ===' && ls -la /packages/rpm/"]