From 448c084b2fa05f20f96c52ce96420a1f0e7de6d7 Mon Sep 17 00:00:00 2001 From: "Arnaud G. GIBERT" Date: Fri, 13 Feb 2026 19:23:39 +0100 Subject: [PATCH] - Add ISL support, - Add ISL display to supervisor HTTPD status page, - Add SERVER_SV_HTTPD_ENABLED env variable, - Use now supervisor 4.3.0, - Use now rx3-docker/base:1.4.0-mga9 image, - Rebuild for updates. --- Dockerfile | 178 +++++++++++++++++++++++++++++++++++++---------- ReadMe.txt | 5 +- ReleaseNotes.txt | 13 ++++ compose.yaml | 2 + env.dist | 6 +- 5 files changed, 165 insertions(+), 39 deletions(-) diff --git a/Dockerfile b/Dockerfile index cc592a6..a5da791 100644 --- a/Dockerfile +++ b/Dockerfile @@ -8,6 +8,7 @@ FROM ${IMG_FROM_URL} ARG IMG_NAME ARG IMG_NAME_FULL ARG IMG_VERSION +ARG IMG_URL ARG IMG_MAINTAINER LABEL org.rx3.${IMG_NAME}.name=${IMG_NAME_FULL} @@ -27,6 +28,88 @@ ARG SERVER_DNSMASQ_INI=/etc/supervisord.d/dnsmasq.ini ARG SERVER_DNSMASQ_CONF=/etc/dnsmasq.conf ARG SERVER_RESOLV_CONF=/etc/resolv.conf +ARG SERVER_SV_INI=/etc/supervisord.d/supervisord.ini +ARG SERVER_SV_HTTPD_INI=/etc/supervisord.d/supervisord-httpd.ini +ARG SERVER_SV_HTTPD_PAGE=/usr/lib/python3.10/site-packages/supervisor/ui/status.html +ARG SERVER_SV_HTTPD_CSS=/usr/lib/python3.10/site-packages/supervisor/ui/stylesheets/supervisor.css + + + +#----------------------------------------------------------------------------------------------------------------------- +ARG SERVER_SV_HTML_IMG_B='status" />' +#----------------------------------------------------------------------------------------------------------------------- +ARG SERVER_SV_HTML_IMG_A='status"/> \n\ +
IMG_NAME_VERSION \n\ +
\n\ + \n\ + \n\ +IMG_STACK_LOG \n\ + \n\ +
\n\ +
\n\ +
' \n\ +#----------------------------------------------------------------------------------------------------------------------- + + + +#----------------------------------------------------------------------------------------------------------------------- +ARG SERVER_SV_CSS_HEADER_B='repeat-x;' +#----------------------------------------------------------------------------------------------------------------------- +ARG SERVER_SV_CSS_HEADER_A='repeat-x; \n\ + display: flex; \n\ + align-items: center; \n\ + justify-content: space-between; \n\ + font-size: 14px; \n\ + font-weight: bold; \n\ +} \n\ + \n\ +\#isl { \n\ + position: relative; \n\ + display: inline-block; \n\ + cursor: pointer; \n\ +} \n\ + \n\ +\#isl-tab { \n\ + visibility: hidden; \n\ + width: fit-content; \n\ + background: #00000000; \n\ + color: white; \n\ + padding: 2px; \n\ + border-radius: 4px; \n\ + position: absolute; \n\ + z-index: 1; \n\ + top: 100%; \n\ + left: 50%; \n\ + transform: translateX(-50%); \n\ + opacity: 0; \n\ + transition: opacity 0.3s; \n\ +} \n\ + \n\ +\#isl:hover #isl-tab { \n\ + visibility: visible; \n\ + opacity: 1; \n\ +} \n\ + \n\ +\#isl-tab table td, \n\ +\#isl-tab table th { \n\ + white-space: nowrap; \n\ + padding: 4px 8px; \n\ + border: 1px solid #666; \n\ +} \n\ + \n\ +\#isl-tab table th { \n\ + border-bottom: 1px solid #888; \n\ +} \n\ + \n\ +\#isl-tab table { \n\ + border-collapse: collapse; \n\ + width: fit-content; \n\ + max-width: 500px; \n\ + overflow-x: auto; \n\ + border: 1px solid #666; \n\ +' +#----------------------------------------------------------------------------------------------------------------------- + #----------------------------------------------------------------------------------------------------------------------- @@ -81,15 +164,15 @@ else \n\ cp '${SERVER_DNSMASQ_CONF}'.dist '${SERVER_DNSMASQ_CONF}' \n\ \n\ - echo "" >> '${SERVER_DNSMASQ_CONF}' \n\ - echo "# Listen local address" >> '${SERVER_DNSMASQ_CONF}' \n\ - echo "interface=lo" >> '${SERVER_DNSMASQ_CONF}' \n\ - echo "bind-interfaces" >> '${SERVER_DNSMASQ_CONF}' \n\ - echo "" >> '${SERVER_DNSMASQ_CONF}' \n\ - echo "port=53 # DNS only" >> '${SERVER_DNSMASQ_CONF}' \n\ - echo "no-dhcp-interface= # disables DHCPv4" >> '${SERVER_DNSMASQ_CONF}' \n\ - echo "" >> '${SERVER_DNSMASQ_CONF}' \n\ - echo "# Forward local domains" >> '${SERVER_DNSMASQ_CONF}' \n\ + echo "" >> '${SERVER_DNSMASQ_CONF}' \n\ + echo "# Listen local address" >> '${SERVER_DNSMASQ_CONF}' \n\ + echo "interface=lo" >> '${SERVER_DNSMASQ_CONF}' \n\ + echo "bind-interfaces" >> '${SERVER_DNSMASQ_CONF}' \n\ + echo "" >> '${SERVER_DNSMASQ_CONF}' \n\ + echo "port=53 # DNS only" >> '${SERVER_DNSMASQ_CONF}' \n\ + echo "no-dhcp-interface= # disables DHCPv4" >> '${SERVER_DNSMASQ_CONF}' \n\ + echo "" >> '${SERVER_DNSMASQ_CONF}' \n\ + echo "# Forward local domains" >> '${SERVER_DNSMASQ_CONF}' \n\ \n\ for map in ${SERVER_DNS_MAP} \n\ do \n\ @@ -101,19 +184,19 @@ else domain="$1" \n\ server="$2" \n\ \n\ - echo "server=/${domain}/${server}" >> '${SERVER_DNSMASQ_CONF}' \n\ + echo "server=/${domain}/${server}" >> '${SERVER_DNSMASQ_CONF}' \n\ done \n\ \n\ - echo "" >> '${SERVER_DNSMASQ_CONF}' \n\ - echo "# Forward all other queries to default server" >> '${SERVER_DNSMASQ_CONF}' \n\ - echo "server=${SERVER_DNS_DEFAULT}" >> '${SERVER_DNSMASQ_CONF}' \n\ + echo "" >> '${SERVER_DNSMASQ_CONF}' \n\ + echo "# Forward all other queries to default server" >> '${SERVER_DNSMASQ_CONF}' \n\ + echo "server=${SERVER_DNS_DEFAULT}" >> '${SERVER_DNSMASQ_CONF}' \n\ \n\ cp /etc/resolv.conf /etc/resolv.conf.old \n\ \n\ - echo "# Generated by DNSMasq init script" > '${SERVER_RESOLV_CONF}' \n\ - echo "" >> '${SERVER_RESOLV_CONF}' \n\ - echo "nameserver 127.0.0.1" >> '${SERVER_RESOLV_CONF}' \n\ - echo "search ${SERVER_DNS_SEARCH}" >> '${SERVER_RESOLV_CONF}' \n\ + echo "# Generated by DNSMasq init script" > '${SERVER_RESOLV_CONF}' \n\ + echo "" >> '${SERVER_RESOLV_CONF}' \n\ + echo "nameserver 127.0.0.1" >> '${SERVER_RESOLV_CONF}' \n\ + echo "search ${SERVER_DNS_SEARCH}" >> '${SERVER_RESOLV_CONF}' \n\ \n\ fi' #----------------------------------------------------------------------------------------------------------------------- @@ -121,17 +204,19 @@ fi' #----------------------------------------------------------------------------------------------------------------------- ARG SUPERVISORD='#!/bin/bash \n\ \n\ -exec supervisord -c /etc/supervisord.conf' -#----------------------------------------------------------------------------------------------------------------------- - -#----------------------------------------------------------------------------------------------------------------------- -ARG SUPERVISORD_INI='[inet_http_server] \n\ -port=*:'${SERVER_PORT_SV_INT}' \n\ +if [[ "${SERVER_SV_HTTPD_ENABLED}" == "FALSE" ]] \n\ +then \n\ + file_enable "'${SERVER_SV_HTTPD_INI}'" FALSE \n\ +else \n\ + file_enable "'${SERVER_SV_HTTPD_INI}'" TRUE \n\ +fi \n\ + \n\ +cp '${SERVER_SV_HTTPD_CSS}.ref' '${SERVER_SV_HTTPD_CSS}' \n\ +cp '${SERVER_SV_HTTPD_PAGE}.ref' '${SERVER_SV_HTTPD_PAGE}' \n\ +sed -i -e "s%IMG_NAME_VERSION%$(isl_last)%" '${SERVER_SV_HTTPD_PAGE}' \n\ +sed -i -e "s%IMG_STACK_LOG%$(isl_html_dump)%" '${SERVER_SV_HTTPD_PAGE}' \n\ \n\ -[supervisord] \n\ -nodaemon=true \n\ -childlogdir='${SERVER_LOG_SV_DIR}' \n\ -user=root' +exec supervisord -c /etc/supervisord.conf' #----------------------------------------------------------------------------------------------------------------------- #----------------------------------------------------------------------------------------------------------------------- @@ -144,9 +229,22 @@ ARG DNSMASQ_INI='[program:dnsmasq] command=dnsmasq -k' #----------------------------------------------------------------------------------------------------------------------- +#----------------------------------------------------------------------------------------------------------------------- +ARG SUPERVISORD_INI='[supervisord] \n\ +nodaemon=true \n\ +childlogdir='${SERVER_LOG_SV_DIR}' \n\ +user=root' +#----------------------------------------------------------------------------------------------------------------------- + +#----------------------------------------------------------------------------------------------------------------------- +ARG SUPERVISORD_HTTPD_INI='[inet_http_server] \n\ +port=*:'${SERVER_PORT_SV_INT} +#----------------------------------------------------------------------------------------------------------------------- -RUN urpmi.update -a \ + +RUN . /etc/profile.d/rx3.sh && isl_add ${IMG_URL} \ + && urpmi.update -a \ && urpmi --force dnsmasq myip supervisor \ && rm -f /var/log/README \ && echo -e "${INIT_SHELL}" | sed -e "s/\`/'/g" -e 's/ *$//' > /usr/local/sbin/init.sh \ @@ -154,25 +252,35 @@ RUN urpmi.update -a && mkdir /etc/rc.d/rcD.d \ && ln -s /etc/rc.d/rcD.d /etc \ && mkdir "${SERVER_LOG_INIT_DIR}" \ - && echo -e "${CROND}" | sed -e "s/\`/'/g" -e 's/ *$//' > /etc/init.d/crond \ - && echo -e "${DNSMASQ}" | sed -e "s/\`/'/g" -e 's/ *$//' > /etc/init.d/dnsmasq \ - && echo -e "${SUPERVISORD}" | sed -e "s/\`/'/g" -e 's/ *$//' > /etc/init.d/supervisord \ + && echo -e "${CROND}" | sed -e "s/\`/'/g" -e 's/ *$//' > /etc/init.d/crond \ + && echo -e "${DNSMASQ}" | sed -e "s/\`/'/g" -e 's/ *$//' > /etc/init.d/dnsmasq \ + && echo -e "${SUPERVISORD}" | sed -e "s/\`/'/g" -e 's/ *$//' > /etc/init.d/supervisord \ && chmod a+x /etc/init.d/crond \ && chmod a+x /etc/init.d/dnsmasq \ && chmod a+x /etc/init.d/supervisord \ && ln -s /etc/init.d/crond /etc/rcD.d/S60crond \ && ln -s /etc/init.d/dnsmasq /etc/rcD.d/S65dnsmasq \ && ln -s /etc/init.d/supervisord /etc/rcD.d/S99supervisord \ - && echo -e "${CROND_INI}" | sed -e "s/\`/'/g" -e 's/ *$//' > /etc/supervisord.d/crond.ini \ - && echo -e "${DNSMASQ_INI}" | sed -e "s/\`/'/g" -e 's/ *$//' > /etc/supervisord.d/dnsmasq.ini \ - && echo -e "${SUPERVISORD_INI}" | sed -e "s/\`/'/g" -e 's/ *$//' > /etc/supervisord.d/supervisord.ini \ - && mv "${SERVER_DNSMASQ_CONF}" "${SERVER_DNSMASQ_CONF}.dist" + && echo -e "${CROND_INI}" | sed -e "s/\`/'/g" -e 's/ *$//' > ${SERVER_CROND_INI} \ + && echo -e "${DNSMASQ_INI}" | sed -e "s/\`/'/g" -e 's/ *$//' > ${SERVER_DNSMASQ_INI} \ + && echo -e "${SUPERVISORD_INI}" | sed -e "s/\`/'/g" -e 's/ *$//' > ${SERVER_SV_INI} \ + && echo -e "${SUPERVISORD_HTTPD_INI}" | sed -e "s/\`/'/g" -e 's/ *$//' > ${SERVER_SV_HTTPD_INI} \ + && mv "${SERVER_DNSMASQ_CONF}" "${SERVER_DNSMASQ_CONF}.dist" \ + && mv "${SERVER_SV_HTTPD_PAGE}" "${SERVER_SV_HTTPD_PAGE}.ref" \ + && sed -i -e "s%${SERVER_SV_HTML_IMG_B}%${SERVER_SV_HTML_IMG_A}%" "${SERVER_SV_HTTPD_PAGE}.ref" \ + && mv "${SERVER_SV_HTTPD_CSS}" "${SERVER_SV_HTTPD_CSS}.ref" \ + && sed -i -e "s/${SERVER_SV_CSS_HEADER_B}/${SERVER_SV_CSS_HEADER_A}/" "${SERVER_SV_HTTPD_CSS}.ref" + VOLUME ${SERVER_LOG_INIT_DIR} VOLUME ${SERVER_LOG_SV_DIR} + + EXPOSE ${SERVER_PORT_SV_INT} + + CMD [] ENTRYPOINT ["init.sh"] diff --git a/ReadMe.txt b/ReadMe.txt index 465ba9c..40373a2 100644 --- a/ReadMe.txt +++ b/ReadMe.txt @@ -5,10 +5,11 @@ Welcome to Rx3-Docker/Server docker image! This project aims to build a Mageia server docker image to be used by other Rx3 packaging projects. Features: - - Curtently based on rx3-docker/base:1.3.6-mga9 image, + - Curtently based on rx3-docker/base:1.4.0-mga9 image, - Init script calling in order sub scripts in /etc/init.d & /etc/rcD.d, - supervisord managing services, - - crond & logrotate configured & crond disabled by default, + - supervisord httpd configured and enabled by default, + - crond & logrotate configured with crond disabled by default, - DNS forwarding support with dnsmasq, disabled by default, - myip tool, - Export init & supivisor log directories as volume. diff --git a/ReleaseNotes.txt b/ReleaseNotes.txt index 1b9a340..48dce5e 100644 --- a/ReleaseNotes.txt +++ b/ReleaseNotes.txt @@ -1,3 +1,16 @@ +------------------------------------------------------------------------------------------------------------------------------------ +Rx3-Docker/Server V 1.3.0 - A. GIBERT - 2026/02/13 +------------------------------------------------------------------------------------------------------------------------------------ + +- Add ISL support, +- Add ISL display to supervisor HTTPD status page, +- Add SERVER_SV_HTTPD_ENABLED env variable, +- Use now supervisor 4.3.0, +- Use now rx3-docker/base:1.4.0-mga9 image, +- Rebuild for updates. + + + ------------------------------------------------------------------------------------------------------------------------------------ Rx3-Docker/Server V 1.2.7 - A. GIBERT - 2025/11/28 ------------------------------------------------------------------------------------------------------------------------------------ diff --git a/compose.yaml b/compose.yaml index 449d68d..0d62285 100644 --- a/compose.yaml +++ b/compose.yaml @@ -17,6 +17,7 @@ services: IMG_NAME: ${IMG_NAME} IMG_NAME_FULL: ${IMG_NAME_FULL} IMG_VERSION: ${IMG_VERSION} + IMG_URL: ${IMG_URL} IMG_MAINTAINER: ${IMG_MAINTAINER} IMG_FROM_URL: ${IMG_FROM_URL} @@ -32,6 +33,7 @@ services: SERVER_DNS_DEFAULT: ${SERVER_DNS_DEFAULT} SERVER_DNS_MAP: ${SERVER_DNS_MAP} SERVER_DNS_SEARCH: ${SERVER_DNS_SEARCH} + SERVER_SV_HTTPD_ENABLED: ${SERVER_SV_HTTPD_ENABLED} volumes: - ./var/log/init:${SERVER_LOG_INIT_DIR} diff --git a/env.dist b/env.dist index df50f0b..5c18a3c 100644 --- a/env.dist +++ b/env.dist @@ -18,13 +18,13 @@ ORG_URL_PREFIX="${ORG_REGISTRY}/${ORG_NAME}" IMG_NAME="server" IMG_NAME_FULL="Rx3-Docker/Server Docker Image" -IMG_VERSION="1.2.7-mga9" +IMG_VERSION="1.3.0-mga9" IMG_MAINTAINER='"Arnaud G. GIBERT" ' IMG_URL_PREFIX="${ORG_URL_PREFIX}" IMG_URL="${IMG_URL_PREFIX}/${IMG_NAME}:${IMG_VERSION}" -IMG_FROM_URL="${ORG_URL_PREFIX}/base:1.3.6-mga9" +IMG_FROM_URL="${ORG_URL_PREFIX}/base:1.4.0-mga9" @@ -43,6 +43,8 @@ SERVER_PORT_SV_INT=9001 SERVER_LOG_INIT_DIR="/var/log/init" SERVER_LOG_SV_DIR="/var/log/supervisor" +SERVER_SV_HTTPD_ENABLED="TRUE" + SERVER_CROND_ENABLED="FALSE" SERVER_DNS_ENABLED="FALSE"