Files
tools/Dockerfile
2026-02-27 18:14:13 +01:00

175 lines
24 KiB
Docker

# Rx3-Docker/Tools Docker Image
#-------------------------------------------------------------------------------
ARG IMG_FROM_URL="rx3-docker/php-apache:latest"
FROM ${IMG_FROM_URL}
ARG IMG_NAME
ARG IMG_NAME_FULL
ARG IMG_VERSION
ARG IMG_MAINTAINER
ARG IMG_URL
LABEL org.rx3.${IMG_NAME}.name=${IMG_NAME_FULL}
LABEL org.rx3.${IMG_NAME}.version=${IMG_VERSION}
LABEL org.rx3.${IMG_NAME}.maintainer=${IMG_MAINTAINER}
LABEL maintainer=${IMG_MAINTAINER}
ARG APACHE_DOC_ROOT
ARG REDPANDA_CONSOLE_PORT
ARG PHPPGADMIN_HTTPD_CONFIG="/etc/httpd/conf/sites.d/default_vhost.d/60-phppgadmin.conf"
ARG PHPPGADMIN_CONFIG="/etc/phppgadmin/config.inc.php"
ARG PHPMYADMIN_HTTPD_CONFIG="/etc/httpd/conf/sites.d/default_vhost.d/60-phpmyadmin.conf"
ARG PHPMYADMIN_CONFIG="/etc/phpmyadmin/config.inc.php"
ARG REDPANDA_CONSOLE_HOME="/opt/appl/redpanda_console"
ARG REDPANDA_CONSOLE_CONFIG="${REDPANDA_CONSOLE_HOME}/etc/redpanda-console-config.yaml"
#-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
ARG TOOLSD='#!/bin/bash \n\
\n\
# PostgreSQL \n\
\n\
cp '${PHPPGADMIN_CONFIG}'.ref '${PHPPGADMIN_CONFIG}' \n\
chown apache:root '${PHPPGADMIN_CONFIG}' \n\
\n\
sed -i "s/\t\$conf\[`servers`\]/\t\/\/\ $conf\[`servers`\]/" '${PHPPGADMIN_CONFIG}' \n\
sed -i "s/\$conf\[`extra_login_security`\] = true;/\$conf\[`extra_login_security`\] = false;/" '${PHPPGADMIN_CONFIG}' \n\
sed -i "s/?>//" '${PHPPGADMIN_CONFIG}' \n\
\n\
for vars in POSTGRESQL_SERVER_NAME:desc POSTGRESQL_HOST:host POSTGRESQL_PORT:port \n\
do \n\
IFS=":" \n\
set ${vars} \n\
\n\
eval read -r -a $2 \<\<\< "\${$1}" \n\
done \n\
\n\
IFS=" " \n\
\n\
i=0 \n\
while [[ ${i} -lt ${#host[@]} ]] \n\
do \n\
for var in desc host port \n\
do \n\
eval echo -e "`\t\$conf`[\`servers\`][${i}][\`${var}\`]` = `\`\${${var}[${i}]}\`\;" >> '${PHPPGADMIN_CONFIG}' \n\
done \n\
\n\
echo -e "\t\$conf[`servers`][${i}][`sslmode`] = `allow`;" >> '${PHPPGADMIN_CONFIG}' \n\
echo -e "\t\$conf[`servers`][${i}][`defaultdb`] = `postgres`;" >> '${PHPPGADMIN_CONFIG}' \n\
echo -e "\t\$conf[`servers`][${i}][`pg_dump_path`] = `/usr/bin/pg_dump`;" >> '${PHPPGADMIN_CONFIG}' \n\
echo -e "\t\$conf[`servers`][${i}][`pg_dumpall_path`] = `/usr/bin/pg_dumpall`;" >> '${PHPPGADMIN_CONFIG}' \n\
\n\
i=$(( ${i} + 1)) \n\
done \n\
\n\
echo "?>" >> '${PHPPGADMIN_CONFIG}' \n\
\n\
\n\
# MariaDB \n\
\n\
cp '${PHPMYADMIN_CONFIG}'.ref '${PHPMYADMIN_CONFIG}' \n\
chown apache:root '${PHPMYADMIN_CONFIG}' \n\
\n\
sed -i -E `s/(^\$cfg`"\[`blowfish_secret`\] = `)([^`]{32})[^`]*`/\1\2`/g" '${PHPMYADMIN_CONFIG}' \n\
sed -i "s/^\$cfg\[`Servers`\]/\/\/\ $cfg\[`Servers`\]/" '${PHPMYADMIN_CONFIG}' \n\
\n\
for vars in MARIADB_SERVER_NAME:verbose MARIADB_HOST:host MARIADB_PORT:port \n\
do \n\
IFS=":" \n\
set ${vars} \n\
\n\
eval read -r -a $2 \<\<\< "\${$1}" \n\
done \n\
\n\
IFS=" " \n\
\n\
i=0 \n\
while [[ ${i} -lt ${#host[@]} ]] \n\
do \n\
j=$(( ${i} + 1)) \n\
\n\
for var in verbose host port \n\
do \n\
eval echo -e "`\$cfg`[\`Servers\`][${j}][\`${var}\`]` = `\`\${${var}[${i}]}\`\;" >> '${PHPMYADMIN_CONFIG}' \n\
done \n\
\n\
echo -e "\$cfg[`Servers`][${j}][`auth_type`] = `cookie`;" >> '${PHPMYADMIN_CONFIG}' \n\
echo -e "\$cfg[`Servers`][${j}][`compress`] = `false`;" >> '${PHPMYADMIN_CONFIG}' \n\
echo -e "\$cfg[`Servers`][${j}][`AllowNoPassword`] = `false`;" >> '${PHPMYADMIN_CONFIG}' \n\
\n\
i=$(( ${i} + 1)) \n\
done \n\
\n\
echo "?>" >> '${PHPMYADMIN_CONFIG}
#-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
#-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
ARG REDPANDA_CONSOLED='#!/bin/bash \n\
\n\
cp '${REDPANDA_CONSOLE_CONFIG}'.ref '${REDPANDA_CONSOLE_CONFIG}' \n\
chown apache:root '${REDPANDA_CONSOLE_CONFIG}' \n\
\n\
if [[ "${KAFKA_BROKERS}" != "" ]] \n\
then \n\
sed -i "s/^ - broker-/ #- broker-/" '${REDPANDA_CONSOLE_CONFIG}' \n\
\n\
for broker in ${KAFKA_BROKERS} \n\
do \n\
sed -i "s/^ brokers:/ brokers:\\n - ${broker}/" '${REDPANDA_CONSOLE_CONFIG}' \n\
done \n\
\n\
sed -i "s/^ #setBasePathFromXForwardedPrefix:/ setBasePathFromXForwardedPrefix:/" '${REDPANDA_CONSOLE_CONFIG}' \n\
sed -i "s/^#server:/server:/" '${REDPANDA_CONSOLE_CONFIG}' \n\
sed -i "s/^ #listenPort: 8080/ listenPort: '${REDPANDA_CONSOLE_PORT}'/" '${REDPANDA_CONSOLE_CONFIG}' \n\
fi \n\
\n\
# RedPanda Console is disabled by default \n\
if [[ "${TOOLS_RPC_ENABLED}" != "TRUE" ]] \n\
then \n\
file_enable /etc/supervisord.d/redpanda_consoled.ini FALSE \n\
fi'
#-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
#-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
ARG REDPANDA_CONSOLED_INI='[program:redpanda_consoled] \n\
directory='${REDPANDA_CONSOLE_HOME}' \n\
command='${REDPANDA_CONSOLE_HOME}'/bin/redpanda-console -config.filepath '${REDPANDA_CONSOLE_CONFIG}' \n\
user=apache'
#-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
RUN . /etc/profile.d/rx3.sh && isl_add ${IMG_URL} \
&& urpmi.update -a \
&& urpmi --force wget postgresql15 phppgadmin mariadb-client phpmyadmin \
&& mv /etc/httpd/conf/sites.d/phppgadmin.conf ${PHPPGADMIN_HTTPD_CONFIG} \
&& sed -i -e '/<Directory .*/,/<\/Directory>/d' ${PHPPGADMIN_HTTPD_CONFIG} \
&& echo -e "<Directory /var/www/phppgadmin>\n AllowOverride All\n Require all granted\n</Directory>" >> ${PHPPGADMIN_HTTPD_CONFIG} \
&& mv ${PHPPGADMIN_CONFIG} ${PHPPGADMIN_CONFIG}.ref \
&& mv /etc/httpd/conf/sites.d/phpmyadmin.conf ${PHPMYADMIN_HTTPD_CONFIG} \
&& sed -i -e '/<Directory .*/,/<\/Directory>/d' ${PHPMYADMIN_HTTPD_CONFIG} \
&& echo -e "<Directory /usr/share/phpmyadmin>\n AllowOverride All\n Require all granted\n</Directory>" >> ${PHPMYADMIN_HTTPD_CONFIG} \
&& mv ${PHPMYADMIN_CONFIG} ${PHPMYADMIN_CONFIG}.ref \
&& echo -e "${TOOLSD}" | sed -e "s/\`/'/g" -e 's/ *$//' > /etc/init.d/toolsd \
&& chmod a+x /etc/init.d/toolsd \
&& ln -s /etc/init.d/toolsd /etc/rcD.d/S40toolsd \
&& mkdir -p ${REDPANDA_CONSOLE_HOME}/bin ${REDPANDA_CONSOLE_HOME}/etc \
&& wget -q -O- "https://github.com/redpanda-data/console/releases/download/v2.7.2/redpanda_console_2.7.2_linux_amd64.tar.gz" | tar xzf - -C ${REDPANDA_CONSOLE_HOME}/bin \
&& wget -q -O- "https://docs.redpanda.com/24.2/shared/_attachments/redpanda-console-config.yaml" > ${REDPANDA_CONSOLE_CONFIG}.ref \
&& echo -e "${REDPANDA_CONSOLED}" | sed -e "s/\`/'/g" -e 's/ *$//' > /etc/init.d/redpanda_consoled \
&& chmod a+x /etc/init.d/redpanda_consoled \
&& ln -s /etc/init.d/redpanda_consoled /etc/rcD.d/S45redpanda_consoled \
&& echo -e "${REDPANDA_CONSOLED_INI}" | sed -e "s/\`/'/g" -e 's/ *$//' > /etc/supervisord.d/redpanda_consoled.ini