1717done
1818
1919echo " ================================================================================================================="
20- sudo mkdir 775 -p /docker/zabbix-docker/
20+ sudo mkdir -m 775 -p /docker/zabbix-docker/
2121cd /docker/zabbix-docker/ 2>&1 1> /dev/null
2222sudo wget https://github.com/zabbix/zabbix-docker/archive/refs/tags/${ZBX_VERSION} .zip
2323sudo unzip ${ZBX_VERSION} .zip
2424cd zabbix-docker-${ZBX_VERSION} 2>&1 1> /dev/null
2525echo " ---> Setting up docker with Zabbix ${ZBX_VERSION} ..."
2626# docker-compose dirty hack: it uses only file named 'docker-compose.yml'
2727yes | sudo cp docker-compose_v3_alpine_mysql_latest.yaml docker-compose.yml
28+
29+ # Pin MySQL to 8.0.33 to avoid mysql_native_password deprecation in 8.0.34+
30+ sudo sed -i ' s/mysql:8\.0/mysql:8.0.33/g' docker-compose.yml
31+
32+ # Replace MYSQL_ROOT_PASSWORD_FILE with plain MYSQL_ROOT_PASSWORD to avoid:
33+ # - "Secret file not found" in Zabbix 6.0+ web container (secret not mounted)
34+ # - "Both X and X_FILE are set" in MySQL 8.0.46+ entrypoint
35+ # 6.4+ compose files also set _FILE in environment: sections.
36+ sudo sed -i ' s/^\(MYSQL_ROOT_PASSWORD_FILE=.*\)/# \1/' env_vars/.env_db_mysql
37+ sudo sed -i ' s/^# MYSQL_ROOT_PASSWORD=$/MYSQL_ROOT_PASSWORD=root_pwd/' env_vars/.env_db_mysql
38+ sudo sed -i ' s/MYSQL_ROOT_PASSWORD_FILE=\/run\/secrets\/MYSQL_ROOT_PASSWORD/MYSQL_ROOT_PASSWORD=root_pwd/' compose_databases.yaml 2> /dev/null
39+
2840docker-compose -f ./docker-compose.yml up -d
29- # wait for full set up
30- sleep 1m
41+
42+ echo " ---> Waiting for Zabbix ..."
43+ WAITED=0
44+ until curl -sf http://localhost:80/ > /dev/null 2>&1 ; do
45+ sleep 5
46+ WAITED=$(( WAITED + 5 ))
47+ if [ $WAITED -ge 300 ]; then
48+ echo " ERROR: Zabbix not ready after 300s"
49+ docker-compose -f ./docker-compose.yml ps
50+ docker-compose -f ./docker-compose.yml logs --tail=20
51+ exit 1
52+ fi
53+ done
0 commit comments