aboutsummaryrefslogtreecommitdiff
path: root/kolla/docker/httpd
diff options
context:
space:
mode:
authorMichal Nasiadka <mnasiadka@gmail.com>2026-07-06 15:26:00 +0200
committerMichal Nasiadka <mnasiadka@gmail.com>2026-07-06 19:59:40 +0000
commitdb35ac8d793506bc43b62e7e39d27a75de1043ed (patch)
treefeec28d13a43490f5fd4260374144a1abfc20331 /kolla/docker/httpd
parent1ae1850557e3b99902f73b32c9005618537a1f2d (diff)
downloadkolla-db35ac8d793506bc43b62e7e39d27a75de1043ed.tar.gz
kolla-db35ac8d793506bc43b62e7e39d27a75de1043ed.zip
Migrate to pyproject.toml
[tool.setuptools.data-files] does not support recursive directory installation. The old setup.cfg [files] worked because PBR's FilesConfig.expand_globs() used os.walk() to expand docker/*, but this hook is not triggered by the pbr.build PEP-517 backend. Move docker/ into kolla/ and use [tool.setuptools.package-data] instead. Update kolla_worker._get_images_dir() to check the kolla package directory first so both editable and regular installs work. Change-Id: I4fc452c03740ef22ebbb4e8d0d86c4f4783e2d09 Signed-off-by: Michal Nasiadka <mnasiadka@gmail.com>
Diffstat (limited to 'kolla/docker/httpd')
-rw-r--r--kolla/docker/httpd/Dockerfile.j242
-rw-r--r--kolla/docker/httpd/extend_start.sh1
-rw-r--r--kolla/docker/httpd/httpd_setup.sh51
3 files changed, 94 insertions, 0 deletions
diff --git a/kolla/docker/httpd/Dockerfile.j2 b/kolla/docker/httpd/Dockerfile.j2
new file mode 100644
index 000000000..ec5637283
--- /dev/null
+++ b/kolla/docker/httpd/Dockerfile.j2
@@ -0,0 +1,42 @@
+FROM {{ namespace }}/{{ image_prefix }}base:{{ tag }}
+{% block labels %}
+LABEL maintainer="{{ maintainer }}" name="{{ image_name }}"
+{% endblock %}
+
+{% block apache_header %}{% endblock %}
+
+{% import "macros.j2" as macros with context %}
+
+{% if base_package_type == 'rpm' %}
+{{ macros.enable_extra_repos(['epel']) }}
+ {% set apache_packages = [
+ 'httpd',
+ 'mod_ssl',
+ 'mod_auth_mellon',
+ 'mod_auth_openidc',
+ 'mod_proxy_uwsgi'
+ ] %}
+{% elif base_package_type == 'deb' %}
+ {% set apache_packages = [
+ 'apache2',
+ 'ca-certificates',
+ 'libapache2-mod-auth-mellon',
+ 'libapache2-mod-auth-openidc'
+ ] %}
+{% endif %}
+
+{{ macros.install_packages(apache_packages | customizable("packages")) }}
+
+{% if base_package_type == 'rpm' %}
+RUN sed -i -r 's,^(Listen 80),#\1,' /etc/httpd/conf/httpd.conf \
+ && sed -i -r 's,^(Listen 443),#\1,' /etc/httpd/conf.d/ssl.conf
+{% elif base_package_type == 'deb' %}
+RUN echo > /etc/apache2/ports.conf
+{% endif %}
+
+COPY extend_start.sh /usr/local/bin/kolla_extend_start
+COPY httpd_setup.sh /usr/local/bin/kolla_httpd_setup
+RUN chmod 644 /usr/local/bin/kolla_extend_start /usr/local/bin/kolla_httpd_setup
+USER root
+
+{% block apache_footer %}{% endblock %}
diff --git a/kolla/docker/httpd/extend_start.sh b/kolla/docker/httpd/extend_start.sh
new file mode 100644
index 000000000..d47af64b9
--- /dev/null
+++ b/kolla/docker/httpd/extend_start.sh
@@ -0,0 +1 @@
+. /usr/local/bin/kolla_httpd_setup
diff --git a/kolla/docker/httpd/httpd_setup.sh b/kolla/docker/httpd/httpd_setup.sh
new file mode 100644
index 000000000..35f7b5b1e
--- /dev/null
+++ b/kolla/docker/httpd/httpd_setup.sh
@@ -0,0 +1,51 @@
+#!/bin/bash
+
+# This script performs setup necessary to run the Apache httpd web server.
+# It should be sourced rather than executed as environment variables are set.
+
+# Assume the service runs on top of Apache httpd when user is root.
+if [[ "$(whoami)" == 'root' ]]; then
+ # NOTE(pbourke): httpd will not clean up after itself in some cases which
+ # results in the container not being able to restart. (bug #1489676, 1557036)
+ if [[ "${KOLLA_BASE_DISTRO}" =~ debian|ubuntu ]]; then
+ # NOTE(yoctozepto): APACHE_CONFDIR has to be set to pass the next step
+ # under the `set -o nounset` regime
+ APACHE_CONFDIR=
+ # Loading Apache2 ENV variables
+ . /etc/apache2/envvars
+ install -d /var/run/apache2/
+ rm -rf /var/run/apache2/*
+ else
+ rm -rf /var/run/httpd/* /run/httpd/* /tmp/httpd*
+ # NOTE(mmalchuk): This added to make Rocky/Centos similar to Ubuntu/Debian
+ # to provide /server-status handler for local monitoring of the Apache.
+ # The module already loaded in the /etc/httpd/conf.modules.d/00-base.conf.
+ cat << EOF >/etc/httpd/conf.modules.d/99-server-status.conf
+<Location "/server-status">
+ SetHandler server-status
+ Require local
+</Location>
+EOF
+ fi
+
+ # CentOS/Rocky have an issue with mod_ssl which produces an invalid Apache
+ # configuration in /etc/httpd/conf.d/ssl.conf. This causes the following error
+ # on startup:
+ # SSLCertificateFile: file '/etc/pki/tls/certs/localhost.crt' does not exist or is empty
+ # Work around this by generating certificates manually.
+ # NOTE(mnasiadka): in EL9 upgrade jobs gencerts is failing on wrong permissions to dhparams.pem
+ if [[ "${KOLLA_BASE_DISTRO}" =~ centos|rocky ]] && [[ ! -e /etc/pki/tls/certs/localhost.crt ]]; then
+ rm -f /tmp/dhparams.pem
+ /usr/libexec/httpd-ssl-gencerts
+ fi
+fi
+
+# The default system locale with unicode support
+LANG=C.UTF-8
+
+# Override the default locale if configured
+if [[ "${KOLLA_BASE_DISTRO}" =~ debian|ubuntu ]]; then
+ [ -f /etc/default/locale ] && . /etc/default/locale
+else
+ [ -f /etc/locale.conf ] && . /etc/locale.conf
+fi