diff --git a/docker/octavia/octavia-api/Dockerfile.j2 b/docker/octavia/octavia-api/Dockerfile.j2 index 65e2c03cec..6c1666c55e 100644 --- a/docker/octavia/octavia-api/Dockerfile.j2 +++ b/docker/octavia/octavia-api/Dockerfile.j2 @@ -8,15 +8,40 @@ LABEL maintainer="{{ maintainer }}" name="{{ image_name }}" build-date="{{ build {% if install_type == 'binary' %} {% if base_package_type == 'rpm' %} {% set octavia_api_packages = [ - 'openstack-octavia-api' + 'openstack-octavia-api', + 'httpd', + 'mod_ssl', + 'mod_wsgi' ] %} {% elif base_package_type == 'deb' %} RUN echo '{{ install_type }} not yet available for {{ base_distro }}' \ && /bin/false {% endif %} + +{% elif install_type == 'source' %} + {% if base_package_type == 'rpm' %} + {% set octavia_api_packages = [ + 'httpd', + 'mod_ssl', + 'mod_wsgi' + ] %} + {% elif base_package_type == 'deb' %} + {% set octavia_api_packages = [ + 'apache2', + 'libapache2-mod-wsgi' + ] %} + {% endif %} + +{% endif %} + {{ macros.install_packages(octavia_api_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_octavia_extend_start diff --git a/docker/octavia/octavia-api/extend_start.sh b/docker/octavia/octavia-api/extend_start.sh index 2692046c9f..fd0e1cf962 100644 --- a/docker/octavia/octavia-api/extend_start.sh +++ b/docker/octavia/octavia-api/extend_start.sh @@ -6,3 +6,17 @@ if [[ "${!KOLLA_BOOTSTRAP[@]}" ]]; then octavia-db-manage upgrade head exit 0 fi + +# Assume the service runs on top of Apache 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 + # Loading Apache2 ENV variables + . /etc/apache2/envvars + rm -rf /var/run/apache2/* + else + rm -rf /var/run/httpd/* /run/httpd/* /tmp/httpd* + fi +fi +~