# Build stage FROM alpine:3.20 AS builds RUN apk add --no-cache \ autoconf \ automake \ build-base \ clang \ gettext-dev \ libmaxminddb-dev \ openssl-dev \ linux-headers \ ncurses-dev \ pkgconf \ tzdata # GoAccess COPY . /goaccess WORKDIR /goaccess RUN autoreconf -fiv && rm -rf autom4te.cache RUN CC="clang" CFLAGS="-O3" LIBS="$(pkg-config --libs openssl)" ./configure --prefix=/usr --enable-utf8 --with-openssl --enable-geoip=mmdb RUN make -j$(nproc) && make DESTDIR=/dist install # Check dynamic dependencies RUN ldd /dist/usr/bin/goaccess && echo "Dependencies checked" # Runtime stage FROM alpine:3.20 RUN apk add --no-cache \ gettext-libs \ libmaxminddb \ ncurses-libs \ openssl \ tzdata # Copy GoAccess binary and assets COPY --from=builds /dist/usr/bin/goaccess /usr/bin/goaccess COPY --from=builds /dist/usr/share /usr/share COPY --from=builds /usr/share/zoneinfo /usr/share/zoneinfo # Set up volume and port VOLUME /var/www/goaccess EXPOSE 7890 ENTRYPOINT ["/usr/bin/goaccess"] CMD ["--help"]