From c066d4ddca0670dbafa027047f07f80c596fee2e Mon Sep 17 00:00:00 2001 From: Alexey Pustovalov Date: Sat, 27 Aug 2022 21:40:18 +0300 Subject: [PATCH] Added posibility for custom SQL scripts during DB init --- .../proxy-mysql/alpine/docker-entrypoint.sh | 37 ++++++--- .../proxy-mysql/centos/docker-entrypoint.sh | 38 ++++++--- .../proxy-mysql/ol/docker-entrypoint.sh | 38 ++++++--- .../proxy-mysql/rhel/docker-entrypoint.sh | 39 ++++++--- .../proxy-mysql/ubuntu/docker-entrypoint.sh | 39 ++++++--- Dockerfiles/server-mysql/alpine/Dockerfile | 2 + .../server-mysql/alpine/docker-entrypoint.sh | 51 +++++++++--- Dockerfiles/server-mysql/centos/Dockerfile | 2 + .../server-mysql/centos/docker-entrypoint.sh | 51 +++++++++--- Dockerfiles/server-mysql/ol/Dockerfile | 2 + .../server-mysql/ol/docker-entrypoint.sh | 51 +++++++++--- Dockerfiles/server-mysql/rhel/Dockerfile | 2 + .../server-mysql/rhel/docker-entrypoint.sh | 51 +++++++++--- Dockerfiles/server-mysql/ubuntu/Dockerfile | 2 + .../server-mysql/ubuntu/docker-entrypoint.sh | 51 +++++++++--- Dockerfiles/server-pgsql/alpine/Dockerfile | 2 + .../server-pgsql/alpine/docker-entrypoint.sh | 82 ++++++++++++------- Dockerfiles/server-pgsql/centos/Dockerfile | 2 + .../server-pgsql/centos/docker-entrypoint.sh | 82 ++++++++++++------- Dockerfiles/server-pgsql/ol/Dockerfile | 2 + .../server-pgsql/ol/docker-entrypoint.sh | 82 ++++++++++++------- Dockerfiles/server-pgsql/ubuntu/Dockerfile | 2 + .../server-pgsql/ubuntu/docker-entrypoint.sh | 82 ++++++++++++------- docker-compose_v3_alpine_mysql_latest.yaml | 1 + docker-compose_v3_alpine_mysql_local.yaml | 1 + docker-compose_v3_alpine_pgsql_latest.yaml | 1 + docker-compose_v3_alpine_pgsql_local.yaml | 1 + docker-compose_v3_centos_mysql_latest.yaml | 1 + docker-compose_v3_centos_mysql_local.yaml | 1 + docker-compose_v3_centos_pgsql_latest.yaml | 1 + docker-compose_v3_centos_pgsql_local.yaml | 1 + docker-compose_v3_ol_mysql_latest.yaml | 1 + docker-compose_v3_ol_mysql_local.yaml | 1 + docker-compose_v3_ol_pgsql_latest.yaml | 1 + docker-compose_v3_ol_pgsql_local.yaml | 1 + docker-compose_v3_ubuntu_mysql_latest.yaml | 1 + docker-compose_v3_ubuntu_mysql_local.yaml | 1 + docker-compose_v3_ubuntu_pgsql_latest.yaml | 1 + docker-compose_v3_ubuntu_pgsql_local.yaml | 1 + 39 files changed, 577 insertions(+), 231 deletions(-) diff --git a/Dockerfiles/proxy-mysql/alpine/docker-entrypoint.sh b/Dockerfiles/proxy-mysql/alpine/docker-entrypoint.sh index 23377d25c..3e560b28a 100755 --- a/Dockerfiles/proxy-mysql/alpine/docker-entrypoint.sh +++ b/Dockerfiles/proxy-mysql/alpine/docker-entrypoint.sh @@ -20,6 +20,9 @@ ZABBIX_USER_HOME_DIR="/var/lib/zabbix" # Configuration files directory ZABBIX_ETC_DIR="/etc/zabbix" +: ${DB_CHARACTER_SET:="utf8mb4"} +: ${DB_CHARACTER_COLLATE:="utf8mb4_bin"} + # usage: file_env VAR [DEFAULT] # as example: file_env 'MYSQL_PASSWORD' 'zabbix' # (will allow for "$MYSQL_PASSWORD_FILE" to fill in the value of "$MYSQL_PASSWORD" from a file) @@ -250,6 +253,28 @@ mysql_query() { echo $result } +exec_sql_file() { + sql_script=$1 + + local command="cat" + + ssl_opts="$(db_tls_params)" + + export MYSQL_PWD="${DB_SERVER_ROOT_PASS}" + + if [ "${sql_script: -3}" == ".gz" ]; then + command="zcat" + fi + + $command "$sql_script" | mysql --silent --skip-column-names \ + --default-character-set=${DB_CHARACTER_SET} \ + -h ${DB_SERVER_HOST} -P ${DB_SERVER_PORT} \ + -u ${DB_SERVER_ROOT_USER} $ssl_opts \ + ${DB_SERVER_DBNAME} 1>/dev/null + + unset MYSQL_PWD +} + create_db_user_mysql() { [ "${CREATE_ZBX_DB_USER}" == "true" ] || return @@ -290,17 +315,7 @@ create_db_schema_mysql() { if [ -z "${ZBX_DB_VERSION}" ]; then echo "** Creating '${DB_SERVER_DBNAME}' schema in MySQL" - ssl_opts="$(db_tls_params)" - - export MYSQL_PWD="${DB_SERVER_ROOT_PASS}" - - zcat /usr/share/doc/zabbix-proxy-mysql/create.sql.gz | mysql --silent --skip-column-names \ - --default-character-set=utf8mb4 \ - -h ${DB_SERVER_HOST} -P ${DB_SERVER_PORT} \ - -u ${DB_SERVER_ROOT_USER} $ssl_opts \ - ${DB_SERVER_DBNAME} 1>/dev/null - - unset MYSQL_PWD + exec_sql_file "/usr/share/doc/zabbix-proxy-mysql/create.sql.gz" fi } diff --git a/Dockerfiles/proxy-mysql/centos/docker-entrypoint.sh b/Dockerfiles/proxy-mysql/centos/docker-entrypoint.sh index 8420b8edb..04cb33d2a 100755 --- a/Dockerfiles/proxy-mysql/centos/docker-entrypoint.sh +++ b/Dockerfiles/proxy-mysql/centos/docker-entrypoint.sh @@ -20,6 +20,9 @@ ZABBIX_USER_HOME_DIR="/var/lib/zabbix" # Configuration files directory ZABBIX_ETC_DIR="/etc/zabbix" +: ${DB_CHARACTER_SET:="utf8mb4"} +: ${DB_CHARACTER_COLLATE:="utf8mb4_bin"} + # usage: file_env VAR [DEFAULT] # as example: file_env 'MYSQL_PASSWORD' 'zabbix' # (will allow for "$MYSQL_PASSWORD_FILE" to fill in the value of "$MYSQL_PASSWORD" from a file) @@ -201,7 +204,6 @@ db_tls_params() { echo $result } - check_db_connect_mysql() { echo "********************" echo "* DB_SERVER_HOST: ${DB_SERVER_HOST}" @@ -248,6 +250,28 @@ mysql_query() { echo $result } +exec_sql_file() { + sql_script=$1 + + local command="cat" + + ssl_opts="$(db_tls_params)" + + export MYSQL_PWD="${DB_SERVER_ROOT_PASS}" + + if [ "${sql_script: -3}" == ".gz" ]; then + command="zcat" + fi + + $command "$sql_script" | mysql --silent --skip-column-names \ + --default-character-set=${DB_CHARACTER_SET} \ + -h ${DB_SERVER_HOST} -P ${DB_SERVER_PORT} \ + -u ${DB_SERVER_ROOT_USER} $ssl_opts \ + ${DB_SERVER_DBNAME} 1>/dev/null + + unset MYSQL_PWD +} + create_db_user_mysql() { [ "${CREATE_ZBX_DB_USER}" == "true" ] || return @@ -288,17 +312,7 @@ create_db_schema_mysql() { if [ -z "${ZBX_DB_VERSION}" ]; then echo "** Creating '${DB_SERVER_DBNAME}' schema in MySQL" - ssl_opts="$(db_tls_params)" - - export MYSQL_PWD="${DB_SERVER_ROOT_PASS}" - - zcat /usr/share/doc/zabbix-proxy-mysql/create.sql.gz | mysql --silent --skip-column-names \ - --default-character-set=utf8mb4 \ - -h ${DB_SERVER_HOST} -P ${DB_SERVER_PORT} \ - -u ${DB_SERVER_ROOT_USER} $ssl_opts \ - ${DB_SERVER_DBNAME} 1>/dev/null - - unset MYSQL_PWD + exec_sql_file "/usr/share/doc/zabbix-proxy-mysql/create.sql.gz" fi } diff --git a/Dockerfiles/proxy-mysql/ol/docker-entrypoint.sh b/Dockerfiles/proxy-mysql/ol/docker-entrypoint.sh index 8420b8edb..04cb33d2a 100755 --- a/Dockerfiles/proxy-mysql/ol/docker-entrypoint.sh +++ b/Dockerfiles/proxy-mysql/ol/docker-entrypoint.sh @@ -20,6 +20,9 @@ ZABBIX_USER_HOME_DIR="/var/lib/zabbix" # Configuration files directory ZABBIX_ETC_DIR="/etc/zabbix" +: ${DB_CHARACTER_SET:="utf8mb4"} +: ${DB_CHARACTER_COLLATE:="utf8mb4_bin"} + # usage: file_env VAR [DEFAULT] # as example: file_env 'MYSQL_PASSWORD' 'zabbix' # (will allow for "$MYSQL_PASSWORD_FILE" to fill in the value of "$MYSQL_PASSWORD" from a file) @@ -201,7 +204,6 @@ db_tls_params() { echo $result } - check_db_connect_mysql() { echo "********************" echo "* DB_SERVER_HOST: ${DB_SERVER_HOST}" @@ -248,6 +250,28 @@ mysql_query() { echo $result } +exec_sql_file() { + sql_script=$1 + + local command="cat" + + ssl_opts="$(db_tls_params)" + + export MYSQL_PWD="${DB_SERVER_ROOT_PASS}" + + if [ "${sql_script: -3}" == ".gz" ]; then + command="zcat" + fi + + $command "$sql_script" | mysql --silent --skip-column-names \ + --default-character-set=${DB_CHARACTER_SET} \ + -h ${DB_SERVER_HOST} -P ${DB_SERVER_PORT} \ + -u ${DB_SERVER_ROOT_USER} $ssl_opts \ + ${DB_SERVER_DBNAME} 1>/dev/null + + unset MYSQL_PWD +} + create_db_user_mysql() { [ "${CREATE_ZBX_DB_USER}" == "true" ] || return @@ -288,17 +312,7 @@ create_db_schema_mysql() { if [ -z "${ZBX_DB_VERSION}" ]; then echo "** Creating '${DB_SERVER_DBNAME}' schema in MySQL" - ssl_opts="$(db_tls_params)" - - export MYSQL_PWD="${DB_SERVER_ROOT_PASS}" - - zcat /usr/share/doc/zabbix-proxy-mysql/create.sql.gz | mysql --silent --skip-column-names \ - --default-character-set=utf8mb4 \ - -h ${DB_SERVER_HOST} -P ${DB_SERVER_PORT} \ - -u ${DB_SERVER_ROOT_USER} $ssl_opts \ - ${DB_SERVER_DBNAME} 1>/dev/null - - unset MYSQL_PWD + exec_sql_file "/usr/share/doc/zabbix-proxy-mysql/create.sql.gz" fi } diff --git a/Dockerfiles/proxy-mysql/rhel/docker-entrypoint.sh b/Dockerfiles/proxy-mysql/rhel/docker-entrypoint.sh index 7bc5bd862..04cb33d2a 100755 --- a/Dockerfiles/proxy-mysql/rhel/docker-entrypoint.sh +++ b/Dockerfiles/proxy-mysql/rhel/docker-entrypoint.sh @@ -20,6 +20,9 @@ ZABBIX_USER_HOME_DIR="/var/lib/zabbix" # Configuration files directory ZABBIX_ETC_DIR="/etc/zabbix" +: ${DB_CHARACTER_SET:="utf8mb4"} +: ${DB_CHARACTER_COLLATE:="utf8mb4_bin"} + # usage: file_env VAR [DEFAULT] # as example: file_env 'MYSQL_PASSWORD' 'zabbix' # (will allow for "$MYSQL_PASSWORD_FILE" to fill in the value of "$MYSQL_PASSWORD" from a file) @@ -201,7 +204,6 @@ db_tls_params() { echo $result } - check_db_connect_mysql() { echo "********************" echo "* DB_SERVER_HOST: ${DB_SERVER_HOST}" @@ -248,6 +250,28 @@ mysql_query() { echo $result } +exec_sql_file() { + sql_script=$1 + + local command="cat" + + ssl_opts="$(db_tls_params)" + + export MYSQL_PWD="${DB_SERVER_ROOT_PASS}" + + if [ "${sql_script: -3}" == ".gz" ]; then + command="zcat" + fi + + $command "$sql_script" | mysql --silent --skip-column-names \ + --default-character-set=${DB_CHARACTER_SET} \ + -h ${DB_SERVER_HOST} -P ${DB_SERVER_PORT} \ + -u ${DB_SERVER_ROOT_USER} $ssl_opts \ + ${DB_SERVER_DBNAME} 1>/dev/null + + unset MYSQL_PWD +} + create_db_user_mysql() { [ "${CREATE_ZBX_DB_USER}" == "true" ] || return @@ -262,7 +286,6 @@ create_db_user_mysql() { fi mysql_query "GRANT ALL PRIVILEGES ON $DB_SERVER_DBNAME. * TO '${DB_SERVER_ZBX_USER}'@'%'" 1>/dev/null - mysql_query "GRANT SESSION_VARIABLES_ADMIN ON *. * TO '${DB_SERVER_ZBX_USER}'@'%'" 1>/dev/null } create_db_database_mysql() { @@ -289,17 +312,7 @@ create_db_schema_mysql() { if [ -z "${ZBX_DB_VERSION}" ]; then echo "** Creating '${DB_SERVER_DBNAME}' schema in MySQL" - ssl_opts="$(db_tls_params)" - - export MYSQL_PWD="${DB_SERVER_ROOT_PASS}" - - zcat /usr/share/doc/zabbix-proxy-mysql/create.sql.gz | mysql --silent --skip-column-names \ - --default-character-set=utf8mb4 \ - -h ${DB_SERVER_HOST} -P ${DB_SERVER_PORT} \ - -u ${DB_SERVER_ROOT_USER} $ssl_opts \ - ${DB_SERVER_DBNAME} 1>/dev/null - - unset MYSQL_PWD + exec_sql_file "/usr/share/doc/zabbix-proxy-mysql/create.sql.gz" fi } diff --git a/Dockerfiles/proxy-mysql/ubuntu/docker-entrypoint.sh b/Dockerfiles/proxy-mysql/ubuntu/docker-entrypoint.sh index 37210e7aa..567db2eaa 100755 --- a/Dockerfiles/proxy-mysql/ubuntu/docker-entrypoint.sh +++ b/Dockerfiles/proxy-mysql/ubuntu/docker-entrypoint.sh @@ -20,6 +20,9 @@ ZABBIX_USER_HOME_DIR="/var/lib/zabbix" # Configuration files directory ZABBIX_ETC_DIR="/etc/zabbix" +: ${DB_CHARACTER_SET:="utf8mb4"} +: ${DB_CHARACTER_COLLATE:="utf8mb4_bin"} + # usage: file_env VAR [DEFAULT] # as example: file_env 'MYSQL_PASSWORD' 'zabbix' # (will allow for "$MYSQL_PASSWORD_FILE" to fill in the value of "$MYSQL_PASSWORD" from a file) @@ -219,7 +222,7 @@ check_db_connect_mysql() { WAIT_TIMEOUT=5 ssl_opts="$(db_tls_params)" - + export MYSQL_PWD="${DB_SERVER_ROOT_PASS}" while [ ! "$(mysqladmin ping -h ${DB_SERVER_HOST} -P ${DB_SERVER_PORT} -u ${DB_SERVER_ROOT_USER} \ @@ -247,6 +250,28 @@ mysql_query() { echo $result } +exec_sql_file() { + sql_script=$1 + + local command="cat" + + ssl_opts="$(db_tls_params)" + + export MYSQL_PWD="${DB_SERVER_ROOT_PASS}" + + if [ "${sql_script: -3}" == ".gz" ]; then + command="zcat" + fi + + $command "$sql_script" | mysql --silent --skip-column-names \ + --default-character-set=${DB_CHARACTER_SET} \ + -h ${DB_SERVER_HOST} -P ${DB_SERVER_PORT} \ + -u ${DB_SERVER_ROOT_USER} $ssl_opts \ + ${DB_SERVER_DBNAME} 1>/dev/null + + unset MYSQL_PWD +} + create_db_user_mysql() { [ "${CREATE_ZBX_DB_USER}" == "true" ] || return @@ -287,17 +312,7 @@ create_db_schema_mysql() { if [ -z "${ZBX_DB_VERSION}" ]; then echo "** Creating '${DB_SERVER_DBNAME}' schema in MySQL" - ssl_opts="$(db_tls_params)" - - export MYSQL_PWD="${DB_SERVER_ROOT_PASS}" - - zcat /usr/share/doc/zabbix-proxy-mysql/create.sql.gz | mysql --silent --skip-column-names \ - --default-character-set=utf8mb4 \ - -h ${DB_SERVER_HOST} -P ${DB_SERVER_PORT} \ - -u ${DB_SERVER_ROOT_USER} $ssl_opts \ - ${DB_SERVER_DBNAME} 1>/dev/null - - unset MYSQL_PWD + exec_sql_file "/usr/share/doc/zabbix-proxy-mysql/create.sql.gz" fi } diff --git a/Dockerfiles/server-mysql/alpine/Dockerfile b/Dockerfiles/server-mysql/alpine/Dockerfile index b18ed14bc..736fe23df 100644 --- a/Dockerfiles/server-mysql/alpine/Dockerfile +++ b/Dockerfiles/server-mysql/alpine/Dockerfile @@ -74,6 +74,8 @@ RUN set -eux && \ mkdir -p /etc/zabbix && \ mkdir -p /var/lib/zabbix && \ mkdir -p /usr/lib/zabbix/alertscripts && \ + mkdir -p /usr/lib/zabbix/dbscripts && \ + mkdir -p /var/lib/zabbix/dbscripts && \ mkdir -p /var/lib/zabbix/enc && \ mkdir -p /var/lib/zabbix/export && \ mkdir -p /usr/lib/zabbix/externalscripts && \ diff --git a/Dockerfiles/server-mysql/alpine/docker-entrypoint.sh b/Dockerfiles/server-mysql/alpine/docker-entrypoint.sh index 014e0a2e1..300909efc 100755 --- a/Dockerfiles/server-mysql/alpine/docker-entrypoint.sh +++ b/Dockerfiles/server-mysql/alpine/docker-entrypoint.sh @@ -15,6 +15,9 @@ ZABBIX_USER_HOME_DIR="/var/lib/zabbix" # Configuration files directory ZABBIX_ETC_DIR="/etc/zabbix" +: ${DB_CHARACTER_SET:="utf8mb4"} +: ${DB_CHARACTER_COLLATE:="utf8mb4_bin"} + # usage: file_env VAR [DEFAULT] # as example: file_env 'MYSQL_PASSWORD' 'zabbix' # (will allow for "$MYSQL_PASSWORD_FILE" to fill in the value of "$MYSQL_PASSWORD" from a file) @@ -245,6 +248,28 @@ mysql_query() { echo $result } +exec_sql_file() { + sql_script=$1 + + local command="cat" + + ssl_opts="$(db_tls_params)" + + export MYSQL_PWD="${DB_SERVER_ROOT_PASS}" + + if [ "${sql_script: -3}" == ".gz" ]; then + command="zcat" + fi + + $command "$sql_script" | mysql --silent --skip-column-names \ + --default-character-set=${DB_CHARACTER_SET} \ + -h ${DB_SERVER_HOST} -P ${DB_SERVER_PORT} \ + -u ${DB_SERVER_ROOT_USER} $ssl_opts \ + ${DB_SERVER_DBNAME} 1>/dev/null + + unset MYSQL_PWD +} + create_db_user_mysql() { [ "${CREATE_ZBX_DB_USER}" == "true" ] || return @@ -266,7 +291,7 @@ create_db_database_mysql() { if [ -z ${DB_EXISTS} ]; then echo "** Database '${DB_SERVER_DBNAME}' does not exist. Creating..." - mysql_query "CREATE DATABASE ${DB_SERVER_DBNAME} CHARACTER SET utf8mb4 COLLATE utf8mb4_bin" 1>/dev/null + mysql_query "CREATE DATABASE ${DB_SERVER_DBNAME} CHARACTER SET ${DB_CHARACTER_SET} COLLATE ${DB_CHARACTER_COLLATE}" 1>/dev/null # better solution? mysql_query "GRANT ALL PRIVILEGES ON $DB_SERVER_DBNAME. * TO '${DB_SERVER_ZBX_USER}'@'%'" 1>/dev/null else @@ -274,6 +299,17 @@ create_db_database_mysql() { fi } +apply_db_scripts() { + db_scripts=$1 + + for sql_script in $db_scripts; do + [ -e "$sql_script" ] || continue + echo "** Processing additional '$sql_script' SQL script" + + exec_sql_file "$sql_script" + done +} + create_db_schema_mysql() { DBVERSION_TABLE_EXISTS=$(mysql_query "SELECT 1 FROM information_schema.tables WHERE table_schema='${DB_SERVER_DBNAME}' and table_name = 'dbversion'") @@ -285,17 +321,10 @@ create_db_schema_mysql() { if [ -z "${ZBX_DB_VERSION}" ]; then echo "** Creating '${DB_SERVER_DBNAME}' schema in MySQL" - ssl_opts="$(db_tls_params)" + exec_sql_file "/usr/share/doc/zabbix-server-mysql/create.sql.gz" - export MYSQL_PWD="${DB_SERVER_ROOT_PASS}" - - zcat /usr/share/doc/zabbix-server-mysql/create.sql.gz | mysql --silent --skip-column-names \ - --default-character-set=utf8mb4 \ - -h ${DB_SERVER_HOST} -P ${DB_SERVER_PORT} \ - -u ${DB_SERVER_ROOT_USER} $ssl_opts \ - ${DB_SERVER_DBNAME} 1>/dev/null - - unset MYSQL_PWD + apply_db_scripts "/usr/lib/zabbix/dbscripts/*.sql" + apply_db_scripts "/var/lib/zabbix/dbscripts/*.sql" fi } diff --git a/Dockerfiles/server-mysql/centos/Dockerfile b/Dockerfiles/server-mysql/centos/Dockerfile index d980f8f9a..340eb8e3d 100644 --- a/Dockerfiles/server-mysql/centos/Dockerfile +++ b/Dockerfiles/server-mysql/centos/Dockerfile @@ -80,6 +80,8 @@ RUN set -eux && \ mkdir -p /etc/zabbix && \ mkdir -p /var/lib/zabbix && \ mkdir -p /usr/lib/zabbix/alertscripts && \ + mkdir -p /usr/lib/zabbix/dbscripts && \ + mkdir -p /var/lib/zabbix/dbscripts && \ mkdir -p /var/lib/zabbix/enc && \ mkdir -p /var/lib/zabbix/export && \ mkdir -p /usr/lib/zabbix/externalscripts && \ diff --git a/Dockerfiles/server-mysql/centos/docker-entrypoint.sh b/Dockerfiles/server-mysql/centos/docker-entrypoint.sh index ff69dd352..19707e580 100755 --- a/Dockerfiles/server-mysql/centos/docker-entrypoint.sh +++ b/Dockerfiles/server-mysql/centos/docker-entrypoint.sh @@ -15,6 +15,9 @@ ZABBIX_USER_HOME_DIR="/var/lib/zabbix" # Configuration files directory ZABBIX_ETC_DIR="/etc/zabbix" +: ${DB_CHARACTER_SET:="utf8mb4"} +: ${DB_CHARACTER_COLLATE:="utf8mb4_bin"} + # usage: file_env VAR [DEFAULT] # as example: file_env 'MYSQL_PASSWORD' 'zabbix' # (will allow for "$MYSQL_PASSWORD_FILE" to fill in the value of "$MYSQL_PASSWORD" from a file) @@ -242,6 +245,28 @@ mysql_query() { echo $result } +exec_sql_file() { + sql_script=$1 + + local command="cat" + + ssl_opts="$(db_tls_params)" + + export MYSQL_PWD="${DB_SERVER_ROOT_PASS}" + + if [ "${sql_script: -3}" == ".gz" ]; then + command="zcat" + fi + + $command "$sql_script" | mysql --silent --skip-column-names \ + --default-character-set=${DB_CHARACTER_SET} \ + -h ${DB_SERVER_HOST} -P ${DB_SERVER_PORT} \ + -u ${DB_SERVER_ROOT_USER} $ssl_opts \ + ${DB_SERVER_DBNAME} 1>/dev/null + + unset MYSQL_PWD +} + create_db_user_mysql() { [ "${CREATE_ZBX_DB_USER}" == "true" ] || return @@ -263,7 +288,7 @@ create_db_database_mysql() { if [ -z ${DB_EXISTS} ]; then echo "** Database '${DB_SERVER_DBNAME}' does not exist. Creating..." - mysql_query "CREATE DATABASE ${DB_SERVER_DBNAME} CHARACTER SET utf8mb4 COLLATE utf8mb4_bin" 1>/dev/null + mysql_query "CREATE DATABASE ${DB_SERVER_DBNAME} CHARACTER SET ${DB_CHARACTER_SET} COLLATE ${DB_CHARACTER_COLLATE}" 1>/dev/null # better solution? mysql_query "GRANT ALL PRIVILEGES ON $DB_SERVER_DBNAME. * TO '${DB_SERVER_ZBX_USER}'@'%'" 1>/dev/null else @@ -271,6 +296,17 @@ create_db_database_mysql() { fi } +apply_db_scripts() { + db_scripts=$1 + + for sql_script in $db_scripts; do + [ -e "$sql_script" ] || continue + echo "** Processing additional '$sql_script' SQL script" + + exec_sql_file "$sql_script" + done +} + create_db_schema_mysql() { DBVERSION_TABLE_EXISTS=$(mysql_query "SELECT 1 FROM information_schema.tables WHERE table_schema='${DB_SERVER_DBNAME}' and table_name = 'dbversion'") @@ -282,17 +318,10 @@ create_db_schema_mysql() { if [ -z "${ZBX_DB_VERSION}" ]; then echo "** Creating '${DB_SERVER_DBNAME}' schema in MySQL" - ssl_opts="$(db_tls_params)" + exec_sql_file "/usr/share/doc/zabbix-server-mysql/create.sql.gz" - export MYSQL_PWD="${DB_SERVER_ROOT_PASS}" - - zcat /usr/share/doc/zabbix-server-mysql/create.sql.gz | mysql --silent --skip-column-names \ - --default-character-set=utf8mb4 \ - -h ${DB_SERVER_HOST} -P ${DB_SERVER_PORT} \ - -u ${DB_SERVER_ROOT_USER} $ssl_opts \ - ${DB_SERVER_DBNAME} 1>/dev/null - - unset MYSQL_PWD + apply_db_scripts "/usr/lib/zabbix/dbscripts/*.sql" + apply_db_scripts "/var/lib/zabbix/dbscripts/*.sql" fi } diff --git a/Dockerfiles/server-mysql/ol/Dockerfile b/Dockerfiles/server-mysql/ol/Dockerfile index 861954e08..9f1d2124e 100644 --- a/Dockerfiles/server-mysql/ol/Dockerfile +++ b/Dockerfiles/server-mysql/ol/Dockerfile @@ -82,6 +82,8 @@ RUN set -eux && \ mkdir -p /etc/zabbix && \ mkdir -p /var/lib/zabbix && \ mkdir -p /usr/lib/zabbix/alertscripts && \ + mkdir -p /usr/lib/zabbix/dbscripts && \ + mkdir -p /var/lib/zabbix/dbscripts && \ mkdir -p /var/lib/zabbix/enc && \ mkdir -p /var/lib/zabbix/export && \ mkdir -p /usr/lib/zabbix/externalscripts && \ diff --git a/Dockerfiles/server-mysql/ol/docker-entrypoint.sh b/Dockerfiles/server-mysql/ol/docker-entrypoint.sh index ff69dd352..19707e580 100755 --- a/Dockerfiles/server-mysql/ol/docker-entrypoint.sh +++ b/Dockerfiles/server-mysql/ol/docker-entrypoint.sh @@ -15,6 +15,9 @@ ZABBIX_USER_HOME_DIR="/var/lib/zabbix" # Configuration files directory ZABBIX_ETC_DIR="/etc/zabbix" +: ${DB_CHARACTER_SET:="utf8mb4"} +: ${DB_CHARACTER_COLLATE:="utf8mb4_bin"} + # usage: file_env VAR [DEFAULT] # as example: file_env 'MYSQL_PASSWORD' 'zabbix' # (will allow for "$MYSQL_PASSWORD_FILE" to fill in the value of "$MYSQL_PASSWORD" from a file) @@ -242,6 +245,28 @@ mysql_query() { echo $result } +exec_sql_file() { + sql_script=$1 + + local command="cat" + + ssl_opts="$(db_tls_params)" + + export MYSQL_PWD="${DB_SERVER_ROOT_PASS}" + + if [ "${sql_script: -3}" == ".gz" ]; then + command="zcat" + fi + + $command "$sql_script" | mysql --silent --skip-column-names \ + --default-character-set=${DB_CHARACTER_SET} \ + -h ${DB_SERVER_HOST} -P ${DB_SERVER_PORT} \ + -u ${DB_SERVER_ROOT_USER} $ssl_opts \ + ${DB_SERVER_DBNAME} 1>/dev/null + + unset MYSQL_PWD +} + create_db_user_mysql() { [ "${CREATE_ZBX_DB_USER}" == "true" ] || return @@ -263,7 +288,7 @@ create_db_database_mysql() { if [ -z ${DB_EXISTS} ]; then echo "** Database '${DB_SERVER_DBNAME}' does not exist. Creating..." - mysql_query "CREATE DATABASE ${DB_SERVER_DBNAME} CHARACTER SET utf8mb4 COLLATE utf8mb4_bin" 1>/dev/null + mysql_query "CREATE DATABASE ${DB_SERVER_DBNAME} CHARACTER SET ${DB_CHARACTER_SET} COLLATE ${DB_CHARACTER_COLLATE}" 1>/dev/null # better solution? mysql_query "GRANT ALL PRIVILEGES ON $DB_SERVER_DBNAME. * TO '${DB_SERVER_ZBX_USER}'@'%'" 1>/dev/null else @@ -271,6 +296,17 @@ create_db_database_mysql() { fi } +apply_db_scripts() { + db_scripts=$1 + + for sql_script in $db_scripts; do + [ -e "$sql_script" ] || continue + echo "** Processing additional '$sql_script' SQL script" + + exec_sql_file "$sql_script" + done +} + create_db_schema_mysql() { DBVERSION_TABLE_EXISTS=$(mysql_query "SELECT 1 FROM information_schema.tables WHERE table_schema='${DB_SERVER_DBNAME}' and table_name = 'dbversion'") @@ -282,17 +318,10 @@ create_db_schema_mysql() { if [ -z "${ZBX_DB_VERSION}" ]; then echo "** Creating '${DB_SERVER_DBNAME}' schema in MySQL" - ssl_opts="$(db_tls_params)" + exec_sql_file "/usr/share/doc/zabbix-server-mysql/create.sql.gz" - export MYSQL_PWD="${DB_SERVER_ROOT_PASS}" - - zcat /usr/share/doc/zabbix-server-mysql/create.sql.gz | mysql --silent --skip-column-names \ - --default-character-set=utf8mb4 \ - -h ${DB_SERVER_HOST} -P ${DB_SERVER_PORT} \ - -u ${DB_SERVER_ROOT_USER} $ssl_opts \ - ${DB_SERVER_DBNAME} 1>/dev/null - - unset MYSQL_PWD + apply_db_scripts "/usr/lib/zabbix/dbscripts/*.sql" + apply_db_scripts "/var/lib/zabbix/dbscripts/*.sql" fi } diff --git a/Dockerfiles/server-mysql/rhel/Dockerfile b/Dockerfiles/server-mysql/rhel/Dockerfile index 949b35b11..e79f1f7db 100644 --- a/Dockerfiles/server-mysql/rhel/Dockerfile +++ b/Dockerfiles/server-mysql/rhel/Dockerfile @@ -110,6 +110,8 @@ RUN set -eux && \ mkdir -p /etc/zabbix && \ mkdir -p /var/lib/zabbix && \ mkdir -p /usr/lib/zabbix/alertscripts && \ + mkdir -p /usr/lib/zabbix/dbscripts && \ + mkdir -p /var/lib/zabbix/dbscripts && \ mkdir -p /var/lib/zabbix/enc && \ mkdir -p /var/lib/zabbix/export && \ mkdir -p /usr/lib/zabbix/externalscripts && \ diff --git a/Dockerfiles/server-mysql/rhel/docker-entrypoint.sh b/Dockerfiles/server-mysql/rhel/docker-entrypoint.sh index ff69dd352..19707e580 100755 --- a/Dockerfiles/server-mysql/rhel/docker-entrypoint.sh +++ b/Dockerfiles/server-mysql/rhel/docker-entrypoint.sh @@ -15,6 +15,9 @@ ZABBIX_USER_HOME_DIR="/var/lib/zabbix" # Configuration files directory ZABBIX_ETC_DIR="/etc/zabbix" +: ${DB_CHARACTER_SET:="utf8mb4"} +: ${DB_CHARACTER_COLLATE:="utf8mb4_bin"} + # usage: file_env VAR [DEFAULT] # as example: file_env 'MYSQL_PASSWORD' 'zabbix' # (will allow for "$MYSQL_PASSWORD_FILE" to fill in the value of "$MYSQL_PASSWORD" from a file) @@ -242,6 +245,28 @@ mysql_query() { echo $result } +exec_sql_file() { + sql_script=$1 + + local command="cat" + + ssl_opts="$(db_tls_params)" + + export MYSQL_PWD="${DB_SERVER_ROOT_PASS}" + + if [ "${sql_script: -3}" == ".gz" ]; then + command="zcat" + fi + + $command "$sql_script" | mysql --silent --skip-column-names \ + --default-character-set=${DB_CHARACTER_SET} \ + -h ${DB_SERVER_HOST} -P ${DB_SERVER_PORT} \ + -u ${DB_SERVER_ROOT_USER} $ssl_opts \ + ${DB_SERVER_DBNAME} 1>/dev/null + + unset MYSQL_PWD +} + create_db_user_mysql() { [ "${CREATE_ZBX_DB_USER}" == "true" ] || return @@ -263,7 +288,7 @@ create_db_database_mysql() { if [ -z ${DB_EXISTS} ]; then echo "** Database '${DB_SERVER_DBNAME}' does not exist. Creating..." - mysql_query "CREATE DATABASE ${DB_SERVER_DBNAME} CHARACTER SET utf8mb4 COLLATE utf8mb4_bin" 1>/dev/null + mysql_query "CREATE DATABASE ${DB_SERVER_DBNAME} CHARACTER SET ${DB_CHARACTER_SET} COLLATE ${DB_CHARACTER_COLLATE}" 1>/dev/null # better solution? mysql_query "GRANT ALL PRIVILEGES ON $DB_SERVER_DBNAME. * TO '${DB_SERVER_ZBX_USER}'@'%'" 1>/dev/null else @@ -271,6 +296,17 @@ create_db_database_mysql() { fi } +apply_db_scripts() { + db_scripts=$1 + + for sql_script in $db_scripts; do + [ -e "$sql_script" ] || continue + echo "** Processing additional '$sql_script' SQL script" + + exec_sql_file "$sql_script" + done +} + create_db_schema_mysql() { DBVERSION_TABLE_EXISTS=$(mysql_query "SELECT 1 FROM information_schema.tables WHERE table_schema='${DB_SERVER_DBNAME}' and table_name = 'dbversion'") @@ -282,17 +318,10 @@ create_db_schema_mysql() { if [ -z "${ZBX_DB_VERSION}" ]; then echo "** Creating '${DB_SERVER_DBNAME}' schema in MySQL" - ssl_opts="$(db_tls_params)" + exec_sql_file "/usr/share/doc/zabbix-server-mysql/create.sql.gz" - export MYSQL_PWD="${DB_SERVER_ROOT_PASS}" - - zcat /usr/share/doc/zabbix-server-mysql/create.sql.gz | mysql --silent --skip-column-names \ - --default-character-set=utf8mb4 \ - -h ${DB_SERVER_HOST} -P ${DB_SERVER_PORT} \ - -u ${DB_SERVER_ROOT_USER} $ssl_opts \ - ${DB_SERVER_DBNAME} 1>/dev/null - - unset MYSQL_PWD + apply_db_scripts "/usr/lib/zabbix/dbscripts/*.sql" + apply_db_scripts "/var/lib/zabbix/dbscripts/*.sql" fi } diff --git a/Dockerfiles/server-mysql/ubuntu/Dockerfile b/Dockerfiles/server-mysql/ubuntu/Dockerfile index 7a40a0251..95057e64f 100644 --- a/Dockerfiles/server-mysql/ubuntu/Dockerfile +++ b/Dockerfiles/server-mysql/ubuntu/Dockerfile @@ -76,6 +76,8 @@ RUN set -eux && \ mkdir -p /etc/zabbix && \ mkdir -p /var/lib/zabbix && \ mkdir -p /usr/lib/zabbix/alertscripts && \ + mkdir -p /usr/lib/zabbix/dbscripts && \ + mkdir -p /var/lib/zabbix/dbscripts && \ mkdir -p /var/lib/zabbix/enc && \ mkdir -p /var/lib/zabbix/export && \ mkdir -p /usr/lib/zabbix/externalscripts && \ diff --git a/Dockerfiles/server-mysql/ubuntu/docker-entrypoint.sh b/Dockerfiles/server-mysql/ubuntu/docker-entrypoint.sh index 5fcc3e696..772a7e75d 100755 --- a/Dockerfiles/server-mysql/ubuntu/docker-entrypoint.sh +++ b/Dockerfiles/server-mysql/ubuntu/docker-entrypoint.sh @@ -15,6 +15,9 @@ ZABBIX_USER_HOME_DIR="/var/lib/zabbix" # Configuration files directory ZABBIX_ETC_DIR="/etc/zabbix" +: ${DB_CHARACTER_SET:="utf8mb4"} +: ${DB_CHARACTER_COLLATE:="utf8mb4_bin"} + # usage: file_env VAR [DEFAULT] # as example: file_env 'MYSQL_PASSWORD' 'zabbix' # (will allow for "$MYSQL_PASSWORD_FILE" to fill in the value of "$MYSQL_PASSWORD" from a file) @@ -242,6 +245,28 @@ mysql_query() { echo $result } +exec_sql_file() { + sql_script=$1 + + local command="cat" + + ssl_opts="$(db_tls_params)" + + export MYSQL_PWD="${DB_SERVER_ROOT_PASS}" + + if [ "${sql_script: -3}" == ".gz" ]; then + command="zcat" + fi + + $command "$sql_script" | mysql --silent --skip-column-names \ + --default-character-set=${DB_CHARACTER_SET} \ + -h ${DB_SERVER_HOST} -P ${DB_SERVER_PORT} \ + -u ${DB_SERVER_ROOT_USER} $ssl_opts \ + ${DB_SERVER_DBNAME} 1>/dev/null + + unset MYSQL_PWD +} + create_db_user_mysql() { [ "${CREATE_ZBX_DB_USER}" == "true" ] || return @@ -263,7 +288,7 @@ create_db_database_mysql() { if [ -z ${DB_EXISTS} ]; then echo "** Database '${DB_SERVER_DBNAME}' does not exist. Creating..." - mysql_query "CREATE DATABASE ${DB_SERVER_DBNAME} CHARACTER SET utf8mb4 COLLATE utf8mb4_bin" 1>/dev/null + mysql_query "CREATE DATABASE ${DB_SERVER_DBNAME} CHARACTER SET ${DB_CHARACTER_SET} COLLATE ${DB_CHARACTER_COLLATE}" 1>/dev/null # better solution? mysql_query "GRANT ALL PRIVILEGES ON $DB_SERVER_DBNAME. * TO '${DB_SERVER_ZBX_USER}'@'%'" 1>/dev/null else @@ -271,6 +296,17 @@ create_db_database_mysql() { fi } +apply_db_scripts() { + db_scripts=$1 + + for sql_script in $db_scripts; do + [ -e "$sql_script" ] || continue + echo "** Processing additional '$sql_script' SQL script" + + exec_sql_file "$sql_script" + done +} + create_db_schema_mysql() { DBVERSION_TABLE_EXISTS=$(mysql_query "SELECT 1 FROM information_schema.tables WHERE table_schema='${DB_SERVER_DBNAME}' and table_name = 'dbversion'") @@ -282,17 +318,10 @@ create_db_schema_mysql() { if [ -z "${ZBX_DB_VERSION}" ]; then echo "** Creating '${DB_SERVER_DBNAME}' schema in MySQL" - ssl_opts="$(db_tls_params)" + exec_sql_file "/usr/share/doc/zabbix-server-mysql/create.sql.gz" - export MYSQL_PWD="${DB_SERVER_ROOT_PASS}" - - zcat /usr/share/doc/zabbix-server-mysql/create.sql.gz | mysql --silent --skip-column-names \ - --default-character-set=utf8mb4 \ - -h ${DB_SERVER_HOST} -P ${DB_SERVER_PORT} \ - -u ${DB_SERVER_ROOT_USER} $ssl_opts \ - ${DB_SERVER_DBNAME} 1>/dev/null - - unset MYSQL_PWD + apply_db_scripts "/usr/lib/zabbix/dbscripts/*.sql" + apply_db_scripts "/var/lib/zabbix/dbscripts/*.sql" fi } diff --git a/Dockerfiles/server-pgsql/alpine/Dockerfile b/Dockerfiles/server-pgsql/alpine/Dockerfile index 0f8fcb70a..41f00366c 100644 --- a/Dockerfiles/server-pgsql/alpine/Dockerfile +++ b/Dockerfiles/server-pgsql/alpine/Dockerfile @@ -75,6 +75,8 @@ RUN set -eux && \ mkdir -p /etc/zabbix && \ mkdir -p /var/lib/zabbix && \ mkdir -p /usr/lib/zabbix/alertscripts && \ + mkdir -p /usr/lib/zabbix/dbscripts && \ + mkdir -p /var/lib/zabbix/dbscripts && \ mkdir -p /var/lib/zabbix/enc && \ mkdir -p /var/lib/zabbix/export && \ mkdir -p /usr/lib/zabbix/externalscripts && \ diff --git a/Dockerfiles/server-pgsql/alpine/docker-entrypoint.sh b/Dockerfiles/server-pgsql/alpine/docker-entrypoint.sh index d967ffdbd..8fe65c29d 100755 --- a/Dockerfiles/server-pgsql/alpine/docker-entrypoint.sh +++ b/Dockerfiles/server-pgsql/alpine/docker-entrypoint.sh @@ -242,6 +242,44 @@ psql_query() { echo $result } +exec_sql_file() { + sql_script=$1 + + local command="cat" + + if [ -n "${DB_SERVER_ZBX_PASS}" ]; then + export PGPASSWORD="${DB_SERVER_ZBX_PASS}" + fi + + if [ "${POSTGRES_USE_IMPLICIT_SEARCH_PATH,,}" == "false" ] && [ -n "${DB_SERVER_SCHEMA}" ]; then + PGOPTIONS="--search_path=${DB_SERVER_SCHEMA}" + export PGOPTIONS + fi + + if [ -n "${ZBX_DBTLSCONNECT}" ]; then + PGSSLMODE=${ZBX_DBTLSCONNECT//_/-} + export PGSSLMODE=${PGSSLMODE//required/require} + export PGSSLROOTCERT=${ZBX_DBTLSCAFILE} + export PGSSLCERT=${ZBX_DBTLSCERTFILE} + export PGSSLKEY=${ZBX_DBTLSKEYFILE} + fi + + if [ "${sql_script: -3}" == ".gz" ]; then + command="zcat" + fi + + $command $sql_script | psql --quiet \ + --host "${DB_SERVER_HOST}" --port "${DB_SERVER_PORT}" \ + --username "${DB_SERVER_ZBX_USER}" --dbname "${DB_SERVER_DBNAME}" 1>/dev/null || exit 1 + + unset PGPASSWORD + unset PGOPTIONS + unset PGSSLMODE + unset PGSSLROOTCERT + unset PGSSLCERT + unset PGSSLKEY +} + create_db_database_postgresql() { DB_EXISTS=$(psql_query "SELECT 1 AS result FROM pg_database WHERE datname='${DB_SERVER_DBNAME}'" "${DB_SERVER_DBNAME}") @@ -281,6 +319,17 @@ create_db_database_postgresql() { psql_query "CREATE SCHEMA IF NOT EXISTS ${DB_SERVER_SCHEMA}" "${DB_SERVER_DBNAME}" 1>/dev/null } +apply_db_scripts() { + db_scripts=$1 + + for sql_script in $db_scripts; do + [ -e "$sql_script" ] || continue + echo "** Processing additional '$sql_script' SQL script" + + exec_sql_file "$sql_script" + done +} + create_db_schema_postgresql() { DBVERSION_TABLE_EXISTS=$(psql_query "SELECT 1 FROM pg_catalog.pg_class c JOIN pg_catalog.pg_namespace n ON n.oid = c.relnamespace WHERE n.nspname = '$DB_SERVER_SCHEMA' AND c.relname = 'dbversion'" "${DB_SERVER_DBNAME}") @@ -297,39 +346,14 @@ create_db_schema_postgresql() { psql_query "CREATE EXTENSION IF NOT EXISTS timescaledb CASCADE;" "${DB_SERVER_DBNAME}" fi - if [ -n "${DB_SERVER_ZBX_PASS}" ]; then - export PGPASSWORD="${DB_SERVER_ZBX_PASS}" - fi - - if [ "${POSTGRES_USE_IMPLICIT_SEARCH_PATH,,}" == "false" ] && [ -n "${DB_SERVER_SCHEMA}" ]; then - PGOPTIONS="--search_path=${DB_SERVER_SCHEMA}" - export PGOPTIONS - fi - - if [ -n "${ZBX_DBTLSCONNECT}" ]; then - PGSSLMODE=${ZBX_DBTLSCONNECT//_/-} - export PGSSLMODE=${PGSSLMODE//required/require} - export PGSSLROOTCERT=${ZBX_DBTLSCAFILE} - export PGSSLCERT=${ZBX_DBTLSCERTFILE} - export PGSSLKEY=${ZBX_DBTLSKEYFILE} - fi - - zcat /usr/share/doc/zabbix-server-postgresql/create.sql.gz | psql --quiet \ - --host "${DB_SERVER_HOST}" --port "${DB_SERVER_PORT}" \ - --username "${DB_SERVER_ZBX_USER}" --dbname "${DB_SERVER_DBNAME}" 1>/dev/null || exit 1 + exec_sql_file "/usr/share/doc/zabbix-server-postgresql/create.sql.gz" if [ "${ENABLE_TIMESCALEDB,,}" == "true" ]; then - cat /usr/share/doc/zabbix-server-postgresql/timescaledb.sql | psql --quiet \ - --host ${DB_SERVER_HOST} --port ${DB_SERVER_PORT} \ - --username ${DB_SERVER_ZBX_USER} --dbname ${DB_SERVER_DBNAME} 1>/dev/null || exit 1 + exec_sql_file "/usr/share/doc/zabbix-server-postgresql/timescaledb.sql" fi - unset PGPASSWORD - unset PGOPTIONS - unset PGSSLMODE - unset PGSSLROOTCERT - unset PGSSLCERT - unset PGSSLKEY + apply_db_scripts "/usr/lib/zabbix/dbscripts/*.sql" + apply_db_scripts "/var/lib/zabbix/dbscripts/*.sql" fi } diff --git a/Dockerfiles/server-pgsql/centos/Dockerfile b/Dockerfiles/server-pgsql/centos/Dockerfile index 187db3384..efe45c8ec 100644 --- a/Dockerfiles/server-pgsql/centos/Dockerfile +++ b/Dockerfiles/server-pgsql/centos/Dockerfile @@ -80,6 +80,8 @@ RUN set -eux && \ mkdir -p /etc/zabbix && \ mkdir -p /var/lib/zabbix && \ mkdir -p /usr/lib/zabbix/alertscripts && \ + mkdir -p /usr/lib/zabbix/dbscripts && \ + mkdir -p /var/lib/zabbix/dbscripts && \ mkdir -p /var/lib/zabbix/enc && \ mkdir -p /var/lib/zabbix/export && \ mkdir -p /usr/lib/zabbix/externalscripts && \ diff --git a/Dockerfiles/server-pgsql/centos/docker-entrypoint.sh b/Dockerfiles/server-pgsql/centos/docker-entrypoint.sh index d967ffdbd..8fe65c29d 100755 --- a/Dockerfiles/server-pgsql/centos/docker-entrypoint.sh +++ b/Dockerfiles/server-pgsql/centos/docker-entrypoint.sh @@ -242,6 +242,44 @@ psql_query() { echo $result } +exec_sql_file() { + sql_script=$1 + + local command="cat" + + if [ -n "${DB_SERVER_ZBX_PASS}" ]; then + export PGPASSWORD="${DB_SERVER_ZBX_PASS}" + fi + + if [ "${POSTGRES_USE_IMPLICIT_SEARCH_PATH,,}" == "false" ] && [ -n "${DB_SERVER_SCHEMA}" ]; then + PGOPTIONS="--search_path=${DB_SERVER_SCHEMA}" + export PGOPTIONS + fi + + if [ -n "${ZBX_DBTLSCONNECT}" ]; then + PGSSLMODE=${ZBX_DBTLSCONNECT//_/-} + export PGSSLMODE=${PGSSLMODE//required/require} + export PGSSLROOTCERT=${ZBX_DBTLSCAFILE} + export PGSSLCERT=${ZBX_DBTLSCERTFILE} + export PGSSLKEY=${ZBX_DBTLSKEYFILE} + fi + + if [ "${sql_script: -3}" == ".gz" ]; then + command="zcat" + fi + + $command $sql_script | psql --quiet \ + --host "${DB_SERVER_HOST}" --port "${DB_SERVER_PORT}" \ + --username "${DB_SERVER_ZBX_USER}" --dbname "${DB_SERVER_DBNAME}" 1>/dev/null || exit 1 + + unset PGPASSWORD + unset PGOPTIONS + unset PGSSLMODE + unset PGSSLROOTCERT + unset PGSSLCERT + unset PGSSLKEY +} + create_db_database_postgresql() { DB_EXISTS=$(psql_query "SELECT 1 AS result FROM pg_database WHERE datname='${DB_SERVER_DBNAME}'" "${DB_SERVER_DBNAME}") @@ -281,6 +319,17 @@ create_db_database_postgresql() { psql_query "CREATE SCHEMA IF NOT EXISTS ${DB_SERVER_SCHEMA}" "${DB_SERVER_DBNAME}" 1>/dev/null } +apply_db_scripts() { + db_scripts=$1 + + for sql_script in $db_scripts; do + [ -e "$sql_script" ] || continue + echo "** Processing additional '$sql_script' SQL script" + + exec_sql_file "$sql_script" + done +} + create_db_schema_postgresql() { DBVERSION_TABLE_EXISTS=$(psql_query "SELECT 1 FROM pg_catalog.pg_class c JOIN pg_catalog.pg_namespace n ON n.oid = c.relnamespace WHERE n.nspname = '$DB_SERVER_SCHEMA' AND c.relname = 'dbversion'" "${DB_SERVER_DBNAME}") @@ -297,39 +346,14 @@ create_db_schema_postgresql() { psql_query "CREATE EXTENSION IF NOT EXISTS timescaledb CASCADE;" "${DB_SERVER_DBNAME}" fi - if [ -n "${DB_SERVER_ZBX_PASS}" ]; then - export PGPASSWORD="${DB_SERVER_ZBX_PASS}" - fi - - if [ "${POSTGRES_USE_IMPLICIT_SEARCH_PATH,,}" == "false" ] && [ -n "${DB_SERVER_SCHEMA}" ]; then - PGOPTIONS="--search_path=${DB_SERVER_SCHEMA}" - export PGOPTIONS - fi - - if [ -n "${ZBX_DBTLSCONNECT}" ]; then - PGSSLMODE=${ZBX_DBTLSCONNECT//_/-} - export PGSSLMODE=${PGSSLMODE//required/require} - export PGSSLROOTCERT=${ZBX_DBTLSCAFILE} - export PGSSLCERT=${ZBX_DBTLSCERTFILE} - export PGSSLKEY=${ZBX_DBTLSKEYFILE} - fi - - zcat /usr/share/doc/zabbix-server-postgresql/create.sql.gz | psql --quiet \ - --host "${DB_SERVER_HOST}" --port "${DB_SERVER_PORT}" \ - --username "${DB_SERVER_ZBX_USER}" --dbname "${DB_SERVER_DBNAME}" 1>/dev/null || exit 1 + exec_sql_file "/usr/share/doc/zabbix-server-postgresql/create.sql.gz" if [ "${ENABLE_TIMESCALEDB,,}" == "true" ]; then - cat /usr/share/doc/zabbix-server-postgresql/timescaledb.sql | psql --quiet \ - --host ${DB_SERVER_HOST} --port ${DB_SERVER_PORT} \ - --username ${DB_SERVER_ZBX_USER} --dbname ${DB_SERVER_DBNAME} 1>/dev/null || exit 1 + exec_sql_file "/usr/share/doc/zabbix-server-postgresql/timescaledb.sql" fi - unset PGPASSWORD - unset PGOPTIONS - unset PGSSLMODE - unset PGSSLROOTCERT - unset PGSSLCERT - unset PGSSLKEY + apply_db_scripts "/usr/lib/zabbix/dbscripts/*.sql" + apply_db_scripts "/var/lib/zabbix/dbscripts/*.sql" fi } diff --git a/Dockerfiles/server-pgsql/ol/Dockerfile b/Dockerfiles/server-pgsql/ol/Dockerfile index de13ea538..5a1c8ba30 100644 --- a/Dockerfiles/server-pgsql/ol/Dockerfile +++ b/Dockerfiles/server-pgsql/ol/Dockerfile @@ -81,6 +81,8 @@ RUN set -eux && \ mkdir -p /etc/zabbix && \ mkdir -p /var/lib/zabbix && \ mkdir -p /usr/lib/zabbix/alertscripts && \ + mkdir -p /usr/lib/zabbix/dbscripts && \ + mkdir -p /var/lib/zabbix/dbscripts && \ mkdir -p /var/lib/zabbix/enc && \ mkdir -p /var/lib/zabbix/export && \ mkdir -p /usr/lib/zabbix/externalscripts && \ diff --git a/Dockerfiles/server-pgsql/ol/docker-entrypoint.sh b/Dockerfiles/server-pgsql/ol/docker-entrypoint.sh index d967ffdbd..8fe65c29d 100755 --- a/Dockerfiles/server-pgsql/ol/docker-entrypoint.sh +++ b/Dockerfiles/server-pgsql/ol/docker-entrypoint.sh @@ -242,6 +242,44 @@ psql_query() { echo $result } +exec_sql_file() { + sql_script=$1 + + local command="cat" + + if [ -n "${DB_SERVER_ZBX_PASS}" ]; then + export PGPASSWORD="${DB_SERVER_ZBX_PASS}" + fi + + if [ "${POSTGRES_USE_IMPLICIT_SEARCH_PATH,,}" == "false" ] && [ -n "${DB_SERVER_SCHEMA}" ]; then + PGOPTIONS="--search_path=${DB_SERVER_SCHEMA}" + export PGOPTIONS + fi + + if [ -n "${ZBX_DBTLSCONNECT}" ]; then + PGSSLMODE=${ZBX_DBTLSCONNECT//_/-} + export PGSSLMODE=${PGSSLMODE//required/require} + export PGSSLROOTCERT=${ZBX_DBTLSCAFILE} + export PGSSLCERT=${ZBX_DBTLSCERTFILE} + export PGSSLKEY=${ZBX_DBTLSKEYFILE} + fi + + if [ "${sql_script: -3}" == ".gz" ]; then + command="zcat" + fi + + $command $sql_script | psql --quiet \ + --host "${DB_SERVER_HOST}" --port "${DB_SERVER_PORT}" \ + --username "${DB_SERVER_ZBX_USER}" --dbname "${DB_SERVER_DBNAME}" 1>/dev/null || exit 1 + + unset PGPASSWORD + unset PGOPTIONS + unset PGSSLMODE + unset PGSSLROOTCERT + unset PGSSLCERT + unset PGSSLKEY +} + create_db_database_postgresql() { DB_EXISTS=$(psql_query "SELECT 1 AS result FROM pg_database WHERE datname='${DB_SERVER_DBNAME}'" "${DB_SERVER_DBNAME}") @@ -281,6 +319,17 @@ create_db_database_postgresql() { psql_query "CREATE SCHEMA IF NOT EXISTS ${DB_SERVER_SCHEMA}" "${DB_SERVER_DBNAME}" 1>/dev/null } +apply_db_scripts() { + db_scripts=$1 + + for sql_script in $db_scripts; do + [ -e "$sql_script" ] || continue + echo "** Processing additional '$sql_script' SQL script" + + exec_sql_file "$sql_script" + done +} + create_db_schema_postgresql() { DBVERSION_TABLE_EXISTS=$(psql_query "SELECT 1 FROM pg_catalog.pg_class c JOIN pg_catalog.pg_namespace n ON n.oid = c.relnamespace WHERE n.nspname = '$DB_SERVER_SCHEMA' AND c.relname = 'dbversion'" "${DB_SERVER_DBNAME}") @@ -297,39 +346,14 @@ create_db_schema_postgresql() { psql_query "CREATE EXTENSION IF NOT EXISTS timescaledb CASCADE;" "${DB_SERVER_DBNAME}" fi - if [ -n "${DB_SERVER_ZBX_PASS}" ]; then - export PGPASSWORD="${DB_SERVER_ZBX_PASS}" - fi - - if [ "${POSTGRES_USE_IMPLICIT_SEARCH_PATH,,}" == "false" ] && [ -n "${DB_SERVER_SCHEMA}" ]; then - PGOPTIONS="--search_path=${DB_SERVER_SCHEMA}" - export PGOPTIONS - fi - - if [ -n "${ZBX_DBTLSCONNECT}" ]; then - PGSSLMODE=${ZBX_DBTLSCONNECT//_/-} - export PGSSLMODE=${PGSSLMODE//required/require} - export PGSSLROOTCERT=${ZBX_DBTLSCAFILE} - export PGSSLCERT=${ZBX_DBTLSCERTFILE} - export PGSSLKEY=${ZBX_DBTLSKEYFILE} - fi - - zcat /usr/share/doc/zabbix-server-postgresql/create.sql.gz | psql --quiet \ - --host "${DB_SERVER_HOST}" --port "${DB_SERVER_PORT}" \ - --username "${DB_SERVER_ZBX_USER}" --dbname "${DB_SERVER_DBNAME}" 1>/dev/null || exit 1 + exec_sql_file "/usr/share/doc/zabbix-server-postgresql/create.sql.gz" if [ "${ENABLE_TIMESCALEDB,,}" == "true" ]; then - cat /usr/share/doc/zabbix-server-postgresql/timescaledb.sql | psql --quiet \ - --host ${DB_SERVER_HOST} --port ${DB_SERVER_PORT} \ - --username ${DB_SERVER_ZBX_USER} --dbname ${DB_SERVER_DBNAME} 1>/dev/null || exit 1 + exec_sql_file "/usr/share/doc/zabbix-server-postgresql/timescaledb.sql" fi - unset PGPASSWORD - unset PGOPTIONS - unset PGSSLMODE - unset PGSSLROOTCERT - unset PGSSLCERT - unset PGSSLKEY + apply_db_scripts "/usr/lib/zabbix/dbscripts/*.sql" + apply_db_scripts "/var/lib/zabbix/dbscripts/*.sql" fi } diff --git a/Dockerfiles/server-pgsql/ubuntu/Dockerfile b/Dockerfiles/server-pgsql/ubuntu/Dockerfile index 50989894c..d75fd861f 100644 --- a/Dockerfiles/server-pgsql/ubuntu/Dockerfile +++ b/Dockerfiles/server-pgsql/ubuntu/Dockerfile @@ -77,6 +77,8 @@ RUN set -eux && \ mkdir -p /etc/zabbix && \ mkdir -p /var/lib/zabbix && \ mkdir -p /usr/lib/zabbix/alertscripts && \ + mkdir -p /usr/lib/zabbix/dbscripts && \ + mkdir -p /var/lib/zabbix/dbscripts && \ mkdir -p /var/lib/zabbix/enc && \ mkdir -p /var/lib/zabbix/export && \ mkdir -p /usr/lib/zabbix/externalscripts && \ diff --git a/Dockerfiles/server-pgsql/ubuntu/docker-entrypoint.sh b/Dockerfiles/server-pgsql/ubuntu/docker-entrypoint.sh index 8923e86cf..ecfcc9793 100755 --- a/Dockerfiles/server-pgsql/ubuntu/docker-entrypoint.sh +++ b/Dockerfiles/server-pgsql/ubuntu/docker-entrypoint.sh @@ -242,6 +242,44 @@ psql_query() { echo $result } +exec_sql_file() { + sql_script=$1 + + local command="cat" + + if [ -n "${DB_SERVER_ZBX_PASS}" ]; then + export PGPASSWORD="${DB_SERVER_ZBX_PASS}" + fi + + if [ "${POSTGRES_USE_IMPLICIT_SEARCH_PATH,,}" == "false" ] && [ -n "${DB_SERVER_SCHEMA}" ]; then + PGOPTIONS="--search_path=${DB_SERVER_SCHEMA}" + export PGOPTIONS + fi + + if [ -n "${ZBX_DBTLSCONNECT}" ]; then + PGSSLMODE=${ZBX_DBTLSCONNECT//_/-} + export PGSSLMODE=${PGSSLMODE//required/require} + export PGSSLROOTCERT=${ZBX_DBTLSCAFILE} + export PGSSLCERT=${ZBX_DBTLSCERTFILE} + export PGSSLKEY=${ZBX_DBTLSKEYFILE} + fi + + if [ "${sql_script: -3}" == ".gz" ]; then + command="zcat" + fi + + $command $sql_script | psql --quiet \ + --host "${DB_SERVER_HOST}" --port "${DB_SERVER_PORT}" \ + --username "${DB_SERVER_ZBX_USER}" --dbname "${DB_SERVER_DBNAME}" 1>/dev/null || exit 1 + + unset PGPASSWORD + unset PGOPTIONS + unset PGSSLMODE + unset PGSSLROOTCERT + unset PGSSLCERT + unset PGSSLKEY +} + create_db_database_postgresql() { DB_EXISTS=$(psql_query "SELECT 1 AS result FROM pg_database WHERE datname='${DB_SERVER_DBNAME}'" "${DB_SERVER_DBNAME}") @@ -281,6 +319,17 @@ create_db_database_postgresql() { psql_query "CREATE SCHEMA IF NOT EXISTS ${DB_SERVER_SCHEMA}" "${DB_SERVER_DBNAME}" 1>/dev/null } +apply_db_scripts() { + db_scripts=$1 + + for sql_script in $db_scripts; do + [ -e "$sql_script" ] || continue + echo "** Processing additional '$sql_script' SQL script" + + exec_sql_file "$sql_script" + done +} + create_db_schema_postgresql() { DBVERSION_TABLE_EXISTS=$(psql_query "SELECT 1 FROM pg_catalog.pg_class c JOIN pg_catalog.pg_namespace n ON n.oid = c.relnamespace WHERE n.nspname = '$DB_SERVER_SCHEMA' AND c.relname = 'dbversion'" "${DB_SERVER_DBNAME}") @@ -297,39 +346,14 @@ create_db_schema_postgresql() { psql_query "CREATE EXTENSION IF NOT EXISTS timescaledb CASCADE;" "${DB_SERVER_DBNAME}" fi - if [ -n "${DB_SERVER_ZBX_PASS}" ]; then - export PGPASSWORD="${DB_SERVER_ZBX_PASS}" - fi - - if [ "${POSTGRES_USE_IMPLICIT_SEARCH_PATH,,}" == "false" ] && [ -n "${DB_SERVER_SCHEMA}" ]; then - PGOPTIONS="--search_path=${DB_SERVER_SCHEMA}" - export PGOPTIONS - fi - - if [ -n "${ZBX_DBTLSCONNECT}" ]; then - PGSSLMODE=${ZBX_DBTLSCONNECT//_/-} - export PGSSLMODE=${PGSSLMODE//required/require} - export PGSSLROOTCERT=${ZBX_DBTLSCAFILE} - export PGSSLCERT=${ZBX_DBTLSCERTFILE} - export PGSSLKEY=${ZBX_DBTLSKEYFILE} - fi - - zcat /usr/share/doc/zabbix-server-postgresql/create.sql.gz | psql --quiet \ - --host "${DB_SERVER_HOST}" --port "${DB_SERVER_PORT}" \ - --username "${DB_SERVER_ZBX_USER}" --dbname "${DB_SERVER_DBNAME}" 1>/dev/null || exit 1 + exec_sql_file "/usr/share/doc/zabbix-server-postgresql/create.sql.gz" if [ "${ENABLE_TIMESCALEDB,,}" == "true" ]; then - cat /usr/share/doc/zabbix-server-postgresql/timescaledb.sql | psql --quiet \ - --host ${DB_SERVER_HOST} --port ${DB_SERVER_PORT} \ - --username ${DB_SERVER_ZBX_USER} --dbname ${DB_SERVER_DBNAME} 1>/dev/null || exit 1 + exec_sql_file "/usr/share/doc/zabbix-server-postgresql/timescaledb.sql" fi - unset PGPASSWORD - unset PGOPTIONS - unset PGSSLMODE - unset PGSSLROOTCERT - unset PGSSLCERT - unset PGSSLKEY + apply_db_scripts "/usr/lib/zabbix/dbscripts/*.sql" + apply_db_scripts "/var/lib/zabbix/dbscripts/*.sql" fi } diff --git a/docker-compose_v3_alpine_mysql_latest.yaml b/docker-compose_v3_alpine_mysql_latest.yaml index b914a93c7..d4034163a 100644 --- a/docker-compose_v3_alpine_mysql_latest.yaml +++ b/docker-compose_v3_alpine_mysql_latest.yaml @@ -9,6 +9,7 @@ services: - /etc/timezone:/etc/timezone:ro - ./zbx_env/usr/lib/zabbix/alertscripts:/usr/lib/zabbix/alertscripts:ro - ./zbx_env/usr/lib/zabbix/externalscripts:/usr/lib/zabbix/externalscripts:ro + - ./zbx_env/var/lib/zabbix/dbscripts:/var/lib/zabbix/dbscripts:ro - ./zbx_env/var/lib/zabbix/export:/var/lib/zabbix/export:rw - ./zbx_env/var/lib/zabbix/modules:/var/lib/zabbix/modules:ro - ./zbx_env/var/lib/zabbix/enc:/var/lib/zabbix/enc:ro diff --git a/docker-compose_v3_alpine_mysql_local.yaml b/docker-compose_v3_alpine_mysql_local.yaml index fcfc0b0df..15bebd697 100644 --- a/docker-compose_v3_alpine_mysql_local.yaml +++ b/docker-compose_v3_alpine_mysql_local.yaml @@ -46,6 +46,7 @@ services: - /etc/timezone:/etc/timezone:ro - ./zbx_env/usr/lib/zabbix/alertscripts:/usr/lib/zabbix/alertscripts:ro - ./zbx_env/usr/lib/zabbix/externalscripts:/usr/lib/zabbix/externalscripts:ro + - ./zbx_env/var/lib/zabbix/dbscripts:/var/lib/zabbix/dbscripts:ro - ./zbx_env/var/lib/zabbix/export:/var/lib/zabbix/export:rw - ./zbx_env/var/lib/zabbix/modules:/var/lib/zabbix/modules:ro - ./zbx_env/var/lib/zabbix/enc:/var/lib/zabbix/enc:ro diff --git a/docker-compose_v3_alpine_pgsql_latest.yaml b/docker-compose_v3_alpine_pgsql_latest.yaml index ad1b968e2..ad84d4456 100644 --- a/docker-compose_v3_alpine_pgsql_latest.yaml +++ b/docker-compose_v3_alpine_pgsql_latest.yaml @@ -9,6 +9,7 @@ services: - /etc/timezone:/etc/timezone:ro - ./zbx_env/usr/lib/zabbix/alertscripts:/usr/lib/zabbix/alertscripts:ro - ./zbx_env/usr/lib/zabbix/externalscripts:/usr/lib/zabbix/externalscripts:ro + - ./zbx_env/var/lib/zabbix/dbscripts:/var/lib/zabbix/dbscripts:ro - ./zbx_env/var/lib/zabbix/export:/var/lib/zabbix/export:rw - ./zbx_env/var/lib/zabbix/modules:/var/lib/zabbix/modules:ro - ./zbx_env/var/lib/zabbix/enc:/var/lib/zabbix/enc:ro diff --git a/docker-compose_v3_alpine_pgsql_local.yaml b/docker-compose_v3_alpine_pgsql_local.yaml index 18d5512e4..f3b7c7b1c 100644 --- a/docker-compose_v3_alpine_pgsql_local.yaml +++ b/docker-compose_v3_alpine_pgsql_local.yaml @@ -59,6 +59,7 @@ services: - /etc/timezone:/etc/timezone:ro - ./zbx_env/usr/lib/zabbix/alertscripts:/usr/lib/zabbix/alertscripts:ro - ./zbx_env/usr/lib/zabbix/externalscripts:/usr/lib/zabbix/externalscripts:ro + - ./zbx_env/var/lib/zabbix/dbscripts:/var/lib/zabbix/dbscripts:ro - ./zbx_env/var/lib/zabbix/export:/var/lib/zabbix/export:rw - ./zbx_env/var/lib/zabbix/modules:/var/lib/zabbix/modules:ro - ./zbx_env/var/lib/zabbix/enc:/var/lib/zabbix/enc:ro diff --git a/docker-compose_v3_centos_mysql_latest.yaml b/docker-compose_v3_centos_mysql_latest.yaml index efc6121ca..750b45ba1 100644 --- a/docker-compose_v3_centos_mysql_latest.yaml +++ b/docker-compose_v3_centos_mysql_latest.yaml @@ -9,6 +9,7 @@ services: - /etc/timezone:/etc/timezone:ro - ./zbx_env/usr/lib/zabbix/alertscripts:/usr/lib/zabbix/alertscripts:ro - ./zbx_env/usr/lib/zabbix/externalscripts:/usr/lib/zabbix/externalscripts:ro + - ./zbx_env/var/lib/zabbix/dbscripts:/var/lib/zabbix/dbscripts:ro - ./zbx_env/var/lib/zabbix/export:/var/lib/zabbix/export:rw - ./zbx_env/var/lib/zabbix/modules:/var/lib/zabbix/modules:ro - ./zbx_env/var/lib/zabbix/enc:/var/lib/zabbix/enc:ro diff --git a/docker-compose_v3_centos_mysql_local.yaml b/docker-compose_v3_centos_mysql_local.yaml index efa2bc854..771d02efb 100644 --- a/docker-compose_v3_centos_mysql_local.yaml +++ b/docker-compose_v3_centos_mysql_local.yaml @@ -46,6 +46,7 @@ services: - /etc/timezone:/etc/timezone:ro - ./zbx_env/usr/lib/zabbix/alertscripts:/usr/lib/zabbix/alertscripts:ro - ./zbx_env/usr/lib/zabbix/externalscripts:/usr/lib/zabbix/externalscripts:ro + - ./zbx_env/var/lib/zabbix/dbscripts:/var/lib/zabbix/dbscripts:ro - ./zbx_env/var/lib/zabbix/export:/var/lib/zabbix/export:rw - ./zbx_env/var/lib/zabbix/modules:/var/lib/zabbix/modules:ro - ./zbx_env/var/lib/zabbix/enc:/var/lib/zabbix/enc:ro diff --git a/docker-compose_v3_centos_pgsql_latest.yaml b/docker-compose_v3_centos_pgsql_latest.yaml index 625f85537..9d769077c 100644 --- a/docker-compose_v3_centos_pgsql_latest.yaml +++ b/docker-compose_v3_centos_pgsql_latest.yaml @@ -9,6 +9,7 @@ services: - /etc/timezone:/etc/timezone:ro - ./zbx_env/usr/lib/zabbix/alertscripts:/usr/lib/zabbix/alertscripts:ro - ./zbx_env/usr/lib/zabbix/externalscripts:/usr/lib/zabbix/externalscripts:ro + - ./zbx_env/var/lib/zabbix/dbscripts:/var/lib/zabbix/dbscripts:ro - ./zbx_env/var/lib/zabbix/export:/var/lib/zabbix/export:rw - ./zbx_env/var/lib/zabbix/modules:/var/lib/zabbix/modules:ro - ./zbx_env/var/lib/zabbix/enc:/var/lib/zabbix/enc:ro diff --git a/docker-compose_v3_centos_pgsql_local.yaml b/docker-compose_v3_centos_pgsql_local.yaml index d51fae7a2..177d7b393 100644 --- a/docker-compose_v3_centos_pgsql_local.yaml +++ b/docker-compose_v3_centos_pgsql_local.yaml @@ -59,6 +59,7 @@ services: - /etc/timezone:/etc/timezone:ro - ./zbx_env/usr/lib/zabbix/alertscripts:/usr/lib/zabbix/alertscripts:ro - ./zbx_env/usr/lib/zabbix/externalscripts:/usr/lib/zabbix/externalscripts:ro + - ./zbx_env/var/lib/zabbix/dbscripts:/var/lib/zabbix/dbscripts:ro - ./zbx_env/var/lib/zabbix/export:/var/lib/zabbix/export:rw - ./zbx_env/var/lib/zabbix/modules:/var/lib/zabbix/modules:ro - ./zbx_env/var/lib/zabbix/enc:/var/lib/zabbix/enc:ro diff --git a/docker-compose_v3_ol_mysql_latest.yaml b/docker-compose_v3_ol_mysql_latest.yaml index c1556bd98..9ed322158 100644 --- a/docker-compose_v3_ol_mysql_latest.yaml +++ b/docker-compose_v3_ol_mysql_latest.yaml @@ -9,6 +9,7 @@ services: - /etc/timezone:/etc/timezone:ro - ./zbx_env/usr/lib/zabbix/alertscripts:/usr/lib/zabbix/alertscripts:ro - ./zbx_env/usr/lib/zabbix/externalscripts:/usr/lib/zabbix/externalscripts:ro + - ./zbx_env/var/lib/zabbix/dbscripts:/var/lib/zabbix/dbscripts:ro - ./zbx_env/var/lib/zabbix/export:/var/lib/zabbix/export:rw - ./zbx_env/var/lib/zabbix/modules:/var/lib/zabbix/modules:ro - ./zbx_env/var/lib/zabbix/enc:/var/lib/zabbix/enc:ro diff --git a/docker-compose_v3_ol_mysql_local.yaml b/docker-compose_v3_ol_mysql_local.yaml index f8cc8de91..695d2d94a 100644 --- a/docker-compose_v3_ol_mysql_local.yaml +++ b/docker-compose_v3_ol_mysql_local.yaml @@ -46,6 +46,7 @@ services: - /etc/timezone:/etc/timezone:ro - ./zbx_env/usr/lib/zabbix/alertscripts:/usr/lib/zabbix/alertscripts:ro - ./zbx_env/usr/lib/zabbix/externalscripts:/usr/lib/zabbix/externalscripts:ro + - ./zbx_env/var/lib/zabbix/dbscripts:/var/lib/zabbix/dbscripts:ro - ./zbx_env/var/lib/zabbix/export:/var/lib/zabbix/export:rw - ./zbx_env/var/lib/zabbix/modules:/var/lib/zabbix/modules:ro - ./zbx_env/var/lib/zabbix/enc:/var/lib/zabbix/enc:ro diff --git a/docker-compose_v3_ol_pgsql_latest.yaml b/docker-compose_v3_ol_pgsql_latest.yaml index 536f511ce..69619eb9c 100644 --- a/docker-compose_v3_ol_pgsql_latest.yaml +++ b/docker-compose_v3_ol_pgsql_latest.yaml @@ -9,6 +9,7 @@ services: - /etc/timezone:/etc/timezone:ro - ./zbx_env/usr/lib/zabbix/alertscripts:/usr/lib/zabbix/alertscripts:ro - ./zbx_env/usr/lib/zabbix/externalscripts:/usr/lib/zabbix/externalscripts:ro + - ./zbx_env/var/lib/zabbix/dbscripts:/var/lib/zabbix/dbscripts:ro - ./zbx_env/var/lib/zabbix/export:/var/lib/zabbix/export:rw - ./zbx_env/var/lib/zabbix/modules:/var/lib/zabbix/modules:ro - ./zbx_env/var/lib/zabbix/enc:/var/lib/zabbix/enc:ro diff --git a/docker-compose_v3_ol_pgsql_local.yaml b/docker-compose_v3_ol_pgsql_local.yaml index f0f56dca8..43a911210 100644 --- a/docker-compose_v3_ol_pgsql_local.yaml +++ b/docker-compose_v3_ol_pgsql_local.yaml @@ -59,6 +59,7 @@ services: - /etc/timezone:/etc/timezone:ro - ./zbx_env/usr/lib/zabbix/alertscripts:/usr/lib/zabbix/alertscripts:ro - ./zbx_env/usr/lib/zabbix/externalscripts:/usr/lib/zabbix/externalscripts:ro + - ./zbx_env/var/lib/zabbix/dbscripts:/var/lib/zabbix/dbscripts:ro - ./zbx_env/var/lib/zabbix/export:/var/lib/zabbix/export:rw - ./zbx_env/var/lib/zabbix/modules:/var/lib/zabbix/modules:ro - ./zbx_env/var/lib/zabbix/enc:/var/lib/zabbix/enc:ro diff --git a/docker-compose_v3_ubuntu_mysql_latest.yaml b/docker-compose_v3_ubuntu_mysql_latest.yaml index 7285acab5..58b5a17b3 100644 --- a/docker-compose_v3_ubuntu_mysql_latest.yaml +++ b/docker-compose_v3_ubuntu_mysql_latest.yaml @@ -8,6 +8,7 @@ services: - /etc/localtime:/etc/localtime:ro - ./zbx_env/usr/lib/zabbix/alertscripts:/usr/lib/zabbix/alertscripts:ro - ./zbx_env/usr/lib/zabbix/externalscripts:/usr/lib/zabbix/externalscripts:ro + - ./zbx_env/var/lib/zabbix/dbscripts:/var/lib/zabbix/dbscripts:ro - ./zbx_env/var/lib/zabbix/export:/var/lib/zabbix/export:rw - ./zbx_env/var/lib/zabbix/modules:/var/lib/zabbix/modules:ro - ./zbx_env/var/lib/zabbix/enc:/var/lib/zabbix/enc:ro diff --git a/docker-compose_v3_ubuntu_mysql_local.yaml b/docker-compose_v3_ubuntu_mysql_local.yaml index 9f55d362d..9d3ef95e2 100644 --- a/docker-compose_v3_ubuntu_mysql_local.yaml +++ b/docker-compose_v3_ubuntu_mysql_local.yaml @@ -45,6 +45,7 @@ services: - /etc/localtime:/etc/localtime:ro - ./zbx_env/usr/lib/zabbix/alertscripts:/usr/lib/zabbix/alertscripts:ro - ./zbx_env/usr/lib/zabbix/externalscripts:/usr/lib/zabbix/externalscripts:ro + - ./zbx_env/var/lib/zabbix/dbscripts:/var/lib/zabbix/dbscripts:ro - ./zbx_env/var/lib/zabbix/export:/var/lib/zabbix/export:rw - ./zbx_env/var/lib/zabbix/modules:/var/lib/zabbix/modules:ro - ./zbx_env/var/lib/zabbix/enc:/var/lib/zabbix/enc:ro diff --git a/docker-compose_v3_ubuntu_pgsql_latest.yaml b/docker-compose_v3_ubuntu_pgsql_latest.yaml index 9460024cf..96c4ee51e 100644 --- a/docker-compose_v3_ubuntu_pgsql_latest.yaml +++ b/docker-compose_v3_ubuntu_pgsql_latest.yaml @@ -8,6 +8,7 @@ services: - /etc/localtime:/etc/localtime:ro - ./zbx_env/usr/lib/zabbix/alertscripts:/usr/lib/zabbix/alertscripts:ro - ./zbx_env/usr/lib/zabbix/externalscripts:/usr/lib/zabbix/externalscripts:ro + - ./zbx_env/var/lib/zabbix/dbscripts:/var/lib/zabbix/dbscripts:ro - ./zbx_env/var/lib/zabbix/export:/var/lib/zabbix/export:rw - ./zbx_env/var/lib/zabbix/modules:/var/lib/zabbix/modules:ro - ./zbx_env/var/lib/zabbix/enc:/var/lib/zabbix/enc:ro diff --git a/docker-compose_v3_ubuntu_pgsql_local.yaml b/docker-compose_v3_ubuntu_pgsql_local.yaml index 4ab93943f..3f9225c66 100644 --- a/docker-compose_v3_ubuntu_pgsql_local.yaml +++ b/docker-compose_v3_ubuntu_pgsql_local.yaml @@ -58,6 +58,7 @@ services: - /etc/localtime:/etc/localtime:ro - ./zbx_env/usr/lib/zabbix/alertscripts:/usr/lib/zabbix/alertscripts:ro - ./zbx_env/usr/lib/zabbix/externalscripts:/usr/lib/zabbix/externalscripts:ro + - ./zbx_env/var/lib/zabbix/dbscripts:/var/lib/zabbix/dbscripts:ro - ./zbx_env/var/lib/zabbix/export:/var/lib/zabbix/export:rw - ./zbx_env/var/lib/zabbix/modules:/var/lib/zabbix/modules:ro - ./zbx_env/var/lib/zabbix/enc:/var/lib/zabbix/enc:ro