使用docker-compose部署Zabbix Server后无法访问Web UI求助
Zabbix容器部署后Web UI无法访问的排查与修复
问题描述
使用以下docker-compose.yml配置部署Zabbix Server,执行docker-compose up后所有容器状态正常,但无法访问Web UI:
version: '3' services: db: image: mysql:8.0-oracle volumes: - zabbix-db:/var/lib/mysql restart: always container_name: mysql environment: MYSQL_DATABASE: "zabbix" MYSQL_USER: "zabbix" MYSQL_PASSWORD: "zabbix_pwd" MYSQL_ROOT_PASSWORD: "root_pwd" zabbix-java: image: zabbix/zabbix-java-gateway:alpine-7.2-latest container_name: zabbix-java restart: always depends_on: - db zabbix-server-mysql: image: zabbix/zabbix-server-mysql:alpine-7.2-latest container_name: zabbix-server-mysql environment: MYSQL_DATABASE: "zabbix" MYSQL_USER: "zabbix" MYSQL_PASSWORD: "zabbix_pwd" MYSQL_ROOT_PASSWORD: "root_pwd" ZBX_JAVAGATEWAY: "zabbix-java" ports: - "10051:10051" restart: unless-stopped depends_on: - db - zabbix-java web: image: zabbix/zabbix-web-nginx-mysql:alpine-7.2-latest environment: ZBX_SERVER_HOST: "zabbix-server-mysql" DB_SERVER_HOST: "mysql" MYSQL_DATABASE: "zabbix" MYSQL_USER: "zabbix" MYSQL_PASSWORD: "zabbix_pwd" MYSQL_ROOT_PASSWORD: "root_pwd" ports: - "80:8080" restart: always depends_on: - zabbix-server-mysql volumes: zabbix-db: {}
配置问题排查与修复
你的配置存在几个关键问题,导致Web UI无法正常访问:
- MySQL 8.0认证插件不兼容:MySQL 8.0默认使用
caching_sha2_password认证插件,但Zabbix Web容器的PHP组件无法识别该插件,必须强制MySQL使用兼容的mysql_native_password。 - Web容器缺少时区配置:Zabbix Web容器需要指定时区环境变量,否则会导致PHP初始化失败,Web服务无法正常启动。
- 服务启动顺序不等于就绪状态:
depends_on仅控制容器启动顺序,不保证数据库、Zabbix Server完全初始化完成,Web容器可能在依赖服务就绪前就尝试连接,导致启动失败。
修正后的docker-compose配置
version: '3' services: db: image: mysql:8.0-oracle volumes: - zabbix-db:/var/lib/mysql restart: always container_name: mysql environment: MYSQL_DATABASE: "zabbix" MYSQL_USER: "zabbix" MYSQL_PASSWORD: "zabbix_pwd" MYSQL_ROOT_PASSWORD: "root_pwd" # 强制使用兼容的认证插件 MYSQL_DEFAULT_AUTH: mysql_native_password zabbix-java: image: zabbix/zabbix-java-gateway:alpine-7.2-latest container_name: zabbix-java restart: always depends_on: - db zabbix-server-mysql: image: zabbix/zabbix-server-mysql:alpine-7.2-latest container_name: zabbix-server-mysql environment: MYSQL_DATABASE: "zabbix" MYSQL_USER: "zabbix" MYSQL_PASSWORD: "zabbix_pwd" MYSQL_ROOT_PASSWORD: "root_pwd" ZBX_JAVAGATEWAY: "zabbix-java" ports: - "10051:10051" restart: unless-stopped depends_on: - db - zabbix-java web: image: zabbix/zabbix-web-nginx-mysql:alpine-7.2-latest environment: ZBX_SERVER_HOST: "zabbix-server-mysql" DB_SERVER_HOST: "mysql" MYSQL_DATABASE: "zabbix" MYSQL_USER: "zabbix" MYSQL_PASSWORD: "zabbix_pwd" MYSQL_ROOT_PASSWORD: "root_pwd" # 添加时区配置,可根据实际情况修改 PHP_TZ: "Asia/Shanghai" ports: - "80:8080" restart: always depends_on: - zabbix-server-mysql volumes: zabbix-db: {}
额外排查步骤
- 查看Web容器日志:执行
docker logs zabbix-web-nginx-mysql,检查是否有数据库连接失败、PHP初始化错误等关键日志。 - 验证端口占用:执行
netstat -tulpn | grep :80,确认宿主机80端口未被其他服务占用。 - 等待初始化完成:首次启动Zabbix时,数据库需要初始化大量表结构,可能需要3-5分钟,不要立即访问Web UI。
内容的提问来源于stack exchange,提问作者salah bouabid
相关产品推荐
相关产品推荐

