aboutsummaryrefslogtreecommitdiff
path: root/kolla/docker/mariadb-server/Dockerfile.j2
diff options
context:
space:
mode:
Diffstat (limited to 'kolla/docker/mariadb-server/Dockerfile.j2')
-rw-r--r--kolla/docker/mariadb-server/Dockerfile.j296
1 files changed, 96 insertions, 0 deletions
diff --git a/kolla/docker/mariadb-server/Dockerfile.j2 b/kolla/docker/mariadb-server/Dockerfile.j2
new file mode 100644
index 000000000..612b37330
--- /dev/null
+++ b/kolla/docker/mariadb-server/Dockerfile.j2
@@ -0,0 +1,96 @@
+FROM {{ namespace }}/{{ image_prefix }}base:{{ tag }}
+{% block labels %}
+LABEL maintainer="{{ maintainer }}" name="{{ image_name }}"
+{% endblock %}
+
+{% block mariadb_header %}{% endblock %}
+
+{% import "macros.j2" as macros with context %}
+
+{{ macros.configure_user(name='mysql') }}
+
+{% if base_package_type == 'rpm' %}
+
+{# NOTE(mgoddard): EPEL required for pv package #}
+{{ macros.enable_extra_repos(['epel', 'mariadb']) }}
+
+ {% set mariadb_packages = [
+ 'expect',
+ 'mariadb',
+ 'mariadb-backup',
+ 'mariadb-server',
+ 'pv',
+ 'rsync',
+ 'tar'
+ ] %}
+
+{# NOTE(yoctozepto): this is to ensure Kolla Ansible can configure MariaDB to find it #}
+RUN ln -s /usr/lib64/galera-4 /usr/lib64/galera
+
+{% elif base_package_type == 'deb' %}
+{{ macros.enable_extra_repos(['mariadb']) }}
+ {% set mariadb_packages = [
+ 'expect',
+ 'mariadb-backup',
+ 'mariadb-client',
+ 'mariadb-server',
+ 'pv',
+ 'rsync',
+ 'tar'
+ ] %}
+{% endif %}
+
+{{ macros.install_packages(mariadb_packages | customizable("packages")) }}
+
+{% block mariadb_healthcheck %}
+ENV MARIADB_VERSION=11.4
+ADD plugins-archive /
+RUN install -m 755 /plugins/mariadb-server-plugin-mariadb-docker-archive*/$MARIADB_VERSION/healthcheck.sh /usr/bin/healthcheck.sh
+{% endblock %}
+
+COPY mariadb_sudoers /etc/sudoers.d/kolla_mariadb_sudoers
+COPY extend_start.sh /usr/local/bin/kolla_extend_start
+COPY security_reset.expect /usr/local/bin/kolla_security_reset
+COPY backup.sh /usr/local/bin/kolla_mariadb_backup.sh
+COPY backup_replica.sh /usr/local/bin/kolla_mariadb_backup_replica.sh
+
+RUN chmod 644 /usr/local/bin/kolla_extend_start \
+ && chmod 755 /usr/local/bin/kolla_security_reset \
+ /usr/local/bin/kolla_mariadb_backup.sh \
+ /usr/local/bin/kolla_mariadb_backup_replica.sh \
+ && chmod 750 /etc/sudoers.d \
+ && chmod 440 /etc/sudoers.d/kolla_mariadb_sudoers \
+ && rm -rf /var/lib/mysql/*
+
+{% if base_package_type == 'deb' %}
+RUN mkdir -p /var/run/mysqld && chown mysql /var/run/mysqld && chmod 755 /var/run/mysqld
+{% endif %}
+
+{% if docker_healthchecks %}
+{% block healthcheck_installation %}
+
+COPY healthcheck_mariadb /usr/local/bin/healthcheck_mariadb
+RUN chmod 755 /usr/local/bin/healthcheck_mariadb
+
+{% endblock %}
+{% endif %}
+
+{% if use_dumb_init %}
+{% block mariadb_entrypoint %}
+# NOTE(mgoddard): Override the dumb-init arguments to avoid passing
+# --single-child. This does not play well with mysqld_safe, which ignores
+# SIGTERM, meaning Docker needs to forcibly kill the container to stop it.
+# Without --single-child, the TERM signal is sent to all subprocesses,
+# including mysqld.
+
+ENTRYPOINT ["dumb-init", "--"]
+CMD ["kolla_start"]
+{% endblock %}
+{% endif %}
+
+{{ macros.kolla_patch_sources() }}
+
+{% block mariadb_footer %}{% endblock %}
+{% block footer %}{% endblock %}
+
+USER mysql