kolla/docker/horizon/Dockerfile.j2
Michal Arbet 1cda1acc7f Switch to Dynamic Python Version Detection
This commit removes the hardcoded KOLLA_DISTRO_PYTHON_VERSION
and replaces it with dynamic Python version detection during
container images build. Dockerfiles and scripts now use general
python3 references, simplifying maintenance and ensuring
compatibility with future Python versions.

Test cases relying on distro_python_version were also cleaned up.

Change-Id: I891749598247a5e951ed4a873b16acfd0566f59c
2024-09-19 12:22:16 +02:00

76 lines
2.9 KiB
Django/Jinja

FROM {{ namespace }}/{{ image_prefix }}openstack-base:{{ tag }}
{% block labels %}
LABEL maintainer="{{ maintainer }}" name="{{ image_name }}" build-date="{{ build_date }}"
{% endblock %}
{% block horizon_header %}{% endblock %}
{% import "macros.j2" as macros with context %}
{{ macros.configure_user(name='horizon') }}
{% if base_package_type == 'rpm' %}
{% set horizon_packages = [
'gettext'
] %}
{{ macros.install_packages(horizon_packages | customizable("packages")) }}
{% elif base_package_type == 'deb' %}
{% set horizon_packages = [
'gettext',
'locales',
'tzdata'
] %}
{{ macros.install_packages(horizon_packages | customizable("packages")) }}
{% block horizon_ubuntu_source_setup %}
RUN ln -s ../mods-available/headers.load /etc/apache2/mods-enabled/headers.load
{% endblock %}
{% endif %}
ADD horizon-archive /horizon-source
ADD plugins-archive /
{% set horizon_pip_packages = [
'/horizon'
] %}
{% set horizon_plugins_pip_packages = [
'/plugins/*'
] %}
COPY extend_start.sh /usr/local/bin/kolla_extend_start
# NOTE(hrw): to install horizon from unpacked sources we cannot have it in upper-constraints.txt
# NOTE(kevko): This dance with local settings python paths below is needed
# because we are using different distros with different python version and we need to
# know to which path symlink should point to.
RUN ln -s horizon-source/* horizon \
&& {{ macros.upper_constraints_remove("horizon") }} \
&& {{ macros.install_pip(horizon_pip_packages | customizable("pip_packages")) }} \
&& mkdir -p /etc/openstack-dashboard \
&& cp -r /horizon/openstack_dashboard/conf/* /etc/openstack-dashboard/ \
&& cp /horizon/openstack_dashboard/local/local_settings.py.example /etc/openstack-dashboard/local_settings.py \
&& local_settings=$(python -c 'import os;import openstack_dashboard;settings=os.path.dirname(openstack_dashboard.__file__) + "/local/local_settings.py";print(settings);') \
&& rm -f $local_settings \
&& ln -s /etc/openstack-dashboard/local_settings.py $local_settings \
&& mkdir -p /etc/openstack-dashboard/local_settings.d \
&& local_settings_d=$(python -c 'import os;import openstack_dashboard;settings_d=os.path.dirname(openstack_dashboard.__file__) + "/local/local_settings.d";print(settings_d);') \
&& rm -rf $local_settings_d \
&& ln -s /etc/openstack-dashboard/local_settings.d $local_settings_d \
&& cp /horizon/manage.py /var/lib/kolla/venv/bin/manage.py \
&& if [ "$(ls /plugins)" ]; then \
{{ macros.install_pip(horizon_plugins_pip_packages) }}; \
fi \
&& for locale in /var/lib/kolla/venv/lib/python3/site-packages/*/locale; do \
(cd ${locale%/*} && /var/lib/kolla/venv/bin/django-admin compilemessages) \
done \
&& chmod 644 /usr/local/bin/kolla_extend_start
{% block horizon_footer %}{% endblock %}
{% block footer %}{% endblock %}