ledgersmb-docker/proxy/Dockerfile
Erik Huelsmann 62e773da73
Nginx reverse proxy combined with Starman server in one image (#46)
* feat: provide image with nginx

* Re-use parent container configuration and startup scripts

* Rewrite proxy Dockerfile:

* ARCH used to be hard-coded; is now set according to the architecture being built
* Build from the associated LedgerSMB base image (not from 'lsmb-split')
* More deletion of non-required files (/usr/share/doc/*)
* Fewer layers by combining RUN commands

* Use 'server-start' script generated by the installer instead of repeating ourselves

* Don't expose the status module

It won't be accessible anyway: the localhost address is the one inside the container...

* Ensure relative redirects

When the container port :80 is exposed as :8080 on the host,
nginx redirects to http://localhost:80/login.pl with a relative
path, instead of http://localhost:8080/login.pl; the container
isn't bound to :80, so that request fails...

* Rename proxy layer image

* Adjust 'build' script to publish base and regular images

---------

Co-authored-by: Walid Mujahid <walidmujahid@gmail.com>
2025-08-09 14:34:32 +02:00

48 lines
2.6 KiB
Docker

# Install LedgerSMB version
ARG LSMB_VERSION=1.13.0-beta1
# Install s6-overlay
ARG S6_OVERLAY_VERSION=3.2.0.2
FROM ledgersmb/ledgersmb:$LSMB_VERSION
# Repeat args if we still want to use them
ARG LSMB_VERSION
ARG S6_OVERLAY_VERSION
# Install nginx and other dependencies
USER root
RUN set -x && \
DEBIAN_FRONTEND=noninteractive apt-get update -y && \
DEBIAN_FRONTEND=noninteractive apt-get dist-upgrade -y && \
DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends nginx wget xz-utils && \
mkdir -p /var/lib/nginx/body /var/cache/nginx && \
DEBIAN_FRONTEND=noninteractive apt-get autoremove -q -y && \
DEBIAN_FRONTEND=noninteractive apt-get clean -q && \
ARCH="$(case "$(dpkg --print-architecture)" in armv7*) echo "armhf" ;; arm64) echo "aarch64" ;; amd64) echo "x86_64" ;; *) exit 1 ;; esac)" && \
wget -O /tmp/s6-overlay-noarch.tar.xz https://github.com/just-containers/s6-overlay/releases/download/v${S6_OVERLAY_VERSION}/s6-overlay-noarch.tar.xz && \
wget -O /tmp/s6-overlay-noarch.tar.xz.sha256 https://github.com/just-containers/s6-overlay/releases/download/v${S6_OVERLAY_VERSION}/s6-overlay-noarch.tar.xz.sha256 && \
wget -O /tmp/s6-overlay-${ARCH}.tar.xz https://github.com/just-containers/s6-overlay/releases/download/v${S6_OVERLAY_VERSION}/s6-overlay-${ARCH}.tar.xz && \
wget -O /tmp/s6-overlay-${ARCH}.tar.xz.sha256 https://github.com/just-containers/s6-overlay/releases/download/v${S6_OVERLAY_VERSION}/s6-overlay-${ARCH}.tar.xz.sha256 && \
wget -O /tmp/s6-overlay-symlinks-noarch.tar.xz https://github.com/just-containers/s6-overlay/releases/download/v${S6_OVERLAY_VERSION}/s6-overlay-symlinks-noarch.tar.xz && \
wget -O /tmp/s6-overlay-symlinks-noarch.tar.xz.sha256 https://github.com/just-containers/s6-overlay/releases/download/v${S6_OVERLAY_VERSION}/s6-overlay-symlinks-noarch.tar.xz.sha256 && \
cd /tmp && \
sha256sum -c *.sha256 && \
tar -C / -Jxpf /tmp/s6-overlay-noarch.tar.xz && \
tar -C / -Jxpf /tmp/s6-overlay-${ARCH}.tar.xz && \
tar -C / -Jxpf /tmp/s6-overlay-symlinks-noarch.tar.xz && \
rm -rf ~/.cpanm/ /var/lib/apt/lists/* /usr/share/man/* /usr/share/doc/* /tmp/s6-overlay-*.tar.xz*
COPY nginx.conf /etc/nginx/nginx.conf
# Configure nginx and starman with s6
COPY services/starman/run /etc/services.d/starman/run
COPY services/nginx/run /etc/services.d/nginx/run
COPY scripts/ledgersmb_config /etc/s6-overlay/s6-rc.d/ledgersmb_config
RUN chmod +x /etc/services.d/starman/run /etc/services.d/nginx/run /etc/s6-overlay/s6-rc.d/ledgersmb_config/up && \
touch /etc/s6-overlay/s6-rc.d/user/contents.d/ledgersmb_config
EXPOSE 80
ENTRYPOINT ["/init"]