Docker Compose部署Zabbix后Web界面无法访问求助
Zabbix Web界面无法访问排查(Docker Compose部署)
我是Docker新手,尝试通过Docker Compose部署Zabbix,所有容器均已启动,但Web界面无法正常访问,日志显示一切正常。以下是我的docker-compose.yml配置文件:
version: "3.5" services: sql: image: mysql:latest environment: MYSQL_ROOT_PASSWORD: zabbix MYSQL_DB: zabbix MYSQL_USER: zabbix MYSQL_PASSWORD: zabbix volumes: - ./zabbix-mysql:/home/grey/mysql ports: - "3306:3306" restart: always zabbix: image: zabbix/zabbix-server-mysql environment: DB_SERVER_HOST: sql MYSQL_DB: zabbix MYSQL_USER: root MYSQL_PASSWORD: zabbix ZBX_VALUECACHESIZE: 64M ZBX_CACHESIZE: 128M ZBX_TRENDCACHESIZE: 128M volumes: - ./zabbix-serv:/home/grey/zabbix-server links: - sql ports: - "10051:10051" restart: always zabbix-web: image: zabbix/zabbix-web-apache-mysql environment: DB_SERVER_HOST: sql MYSQL_USER: root MYSQL_PASSWORD: zabbix MYSQL_DB: zabbix ZBX_SERVER_HOST: zabbix ZBX_SERVER_PORT: 10051 PHP_TZ: Europe/Paris links: - zabbix - sql ports: - "80:80" - "443:443" restart: always zabbix-agenr: image: zabbix/zabbix-agent environment: DB_SERVER_HOST: sql MYSQL_USER: root MYSQL_PASSWORD: zabbix MYSQL_DB: zabbix ZBX_SERVER_PORT: 10051 ZBX_SERVER_HOST: zabbix links: - zabbix restart: always
排查要点
1. YAML缩进错误
YAML对缩进要求严格,配置中存在多处不符合规范的缩进:
services:前多了一个空格,需与version:对齐zabbix-web:缩进层级错误,需和sql、zabbix等服务同级- 所有服务内部字段(
image、environment等)需保持统一缩进(建议用2或4个空格)
2. 服务名称拼写错误
zabbix-agenr: 拼写错误,应为zabbix-agent:,虽然不直接影响Web服务,但会导致agent配置无效,需修正。
3. 时区配置不匹配
配置中PHP_TZ: Europe/Paris,若宿主机时区与该值不一致,可能引发Web界面加载异常。可改为宿主机对应时区(如Asia/Shanghai),或同步容器与宿主机时区。
4. 数据库权限与初始化问题
- zabbix-server和zabbix-web使用
root用户连接数据库,建议改用已创建的专用zabbix用户,避免权限冲突 - 执行
docker logs <sql容器名>检查mysql初始化日志,确认数据库完全初始化后,Zabbix服务才能正常连接
5. 端口占用问题
检查宿主机80/443端口是否被其他服务占用:
netstat -tulpn | grep :80 netstat -tulpn | grep :443
若端口被占用,修改zabbix-web的端口映射(如"8080:80"),再访问http://localhost:8080测试。
6. 卷挂载路径错误
- mysql容器默认数据目录为
/var/lib/mysql,当前挂载到/home/grey/mysql会导致数据初始化失败,需修正为:volumes: - ./zabbix-mysql:/var/lib/mysql - zabbix-server容器默认数据目录为
/var/lib/zabbix,当前挂载路径不符合预期,可调整为:volumes: - ./zabbix-serv:/var/lib/zabbix
7. 服务启动顺序问题
当前配置未设置服务依赖,zabbix-server和zabbix-web可能在mysql初始化完成前启动,导致连接失败。添加depends_on控制启动顺序:
zabbix: # 其他配置不变 depends_on: - sql zabbix-web: # 其他配置不变 depends_on: - sql - zabbix
内容的提问来源于stack exchange,提问作者Docker newbie
相关产品推荐
相关产品推荐

