You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.15 11:21:04