ARG BASE_IMAGE=alpine:3.22
FROM ${BASE_IMAGE} AS build_stage

RUN apk add -U --no-cache \
    autoconf \
    automake \
    curl \
    gcc \
    libc-dev \
    libevent \
    libevent-dev \
    libtool \
    make \
    openssl-dev \
    pkgconfig \
    git

WORKDIR /src

RUN git clone --single-branch --depth 1 https://github.com/pgbouncer/pgbouncer.git . && \
    git checkout $(git describe --tags $(git rev-list --tags --max-count=1))

RUN git submodule init && git submodule update

RUN ./autogen.sh && \
    ./configure --prefix=/pgbouncer --with-libevent=/usr/lib && \
    sed -i '/dist_man_MANS/d' Makefile && \
    make && \
    make install

FROM ${BASE_IMAGE}

RUN apk -U upgrade --no-cache \
    && apk --no-cache add bash c-ares ca-certificates gettext libevent openssl postgresql-client

RUN addgroup -g 101 -S pgbouncer && \
    adduser -u 100 -S pgbouncer -G pgbouncer && \
    mkdir -p /etc/pgbouncer /var/log/pgbouncer /var/run/pgbouncer /etc/ssl/certs

COPY --from=build_stage /pgbouncer/bin/pgbouncer /bin/pgbouncer
COPY pgbouncer.ini.tmpl /etc/pgbouncer/
COPY entrypoint.sh /entrypoint.sh

RUN chown -R pgbouncer:pgbouncer \
    /var/log/pgbouncer \
    /var/run/pgbouncer \
    /etc/pgbouncer \
    /etc/ssl/certs \
    && chmod +x /entrypoint.sh

USER pgbouncer:pgbouncer
WORKDIR /etc/pgbouncer

ENTRYPOINT ["/bin/sh", "/entrypoint.sh"]
