Blog

Zabbix Installation Using Docker Compose

1/6/2026 1 min read

Whether for quick testing or long-term production use, Zabbix can be flexibly, modularly, and maintainably installed with Docker Compose. This guide shows how to set up Zabbix with minimal effort for testing purposes or create a scalable, maintenance-friendly environment for sustained operation.

Whether for quick tests or long-term productive use: With Docker Compose, Zabbix can be installed flexibly, modularly, and maintainably. In this post, we show how to set up Zabbix with minimal effort for testing purposes or create a scalable, maintenance-friendly environment for long-term operation.

Docker Compose

version: '3.5'
services:
  mysql-server:
    image: mysql:8.0
    networks:
      - zbx_net
    command:
      - mysqld
      - --character-set-server=utf8
      - --collation-server=utf8_bin
      - --default-authentication-plugin=mysql_native_password
    environment:
      - MYSQL_USER=${MYSQL_USER:-zabbix}
      - MYSQL_PASSWORD=${MYSQL_PASSWORD:-defaultpassword}
      - MYSQL_ROOT_PASSWORD=${MYSQL_ROOT_PASSWORD:-rootpassword}
      - ZBX_JAVAGATEWAY=${ZBX_JAVAGATEWAY:-zabbix-java-gateway}
    ports:
      - "3306:3306"
    volumes:
      - zabbix_mysql_data:/var/lib/mysql:rw
    restart: always

  zabbix-server-mysql:
    image: zabbix/zabbix-server-mysql:alpine-latest
    networks:
      - zbx_net
    extra_hosts:
      - "host.docker.internal:host-gateway"
    ports:
      - "10051:10051"
    volumes:
      - zabbix_alertscripts:/usr/lib/zabbix/alertscripts:ro
      - zabbix_externalscripts:/usr/lib/zabbix/externalscripts:ro
      - zabbix_export:/var/lib/zabbix/export:rw
      - zabbix_modules:/var/lib/zabbix/modules:ro
      - zabbix_enc:/var/lib/zabbix/enc:ro
      - zabbix_ssh_keys:/var/lib/zabbix/ssh_keys:ro
      - zabbix_mibs:/var/lib/zabbix/mibs:ro
      - zabbix_snmptraps:/var/lib/zabbix/snmptraps:rw
    environment:
      - DB_SERVER_HOST=${DB_SERVER_HOST:-mysql-server}
      - MYSQL_DATABASE=${MYSQL_DATABASE:-zabbixdb}
      - MYSQL_USER=${MYSQL_USER:-zabbix}
      - MYSQL_PASSWORD=${MYSQL_PASSWORD:-defaultpassword}
      - MYSQL_ROOT_PASSWORD=${MYSQL_ROOT_PASSWORD:-rootpassword}
      - ZBX_JAVAGATEWAY=${ZBX_JAVAGATEWAY:-zabbix-java-gateway}
    depends_on:
      - mysql-server
    restart: always

  zabbix-web-nginx-mysql:
    image: zabbix/zabbix-web-nginx-mysql:alpine-latest
    networks:
      - zbx_net
    ports:
      - "10053:8080"
      - "10054:8443"
    volumes:
      - zabbix_nginx_ssl:/etc/ssl/nginx:ro
      - zabbix_nginx_modules:/usr/share/zabbix/modules/:ro
    environment:
      - ZBX_SERVER_HOST=${ZBX_SERVER_HOST:-zabbix-server-mysql}
      - DB_SERVER_HOST=${DB_SERVER_HOST:-mysql-server}
      - MYSQL_DATABASE=${MYSQL_DATABASE:-zabbixdb}
      - MYSQL_USER=${MYSQL_USER:-zabbix}
      - MYSQL_PASSWORD=${MYSQL_PASSWORD:-defaultpassword}
      - MYSQL_ROOT_PASSWORD=${MYSQL_ROOT_PASSWORD:-rootpassword}
    depends_on:
      - mysql-server
      - zabbix-server-mysql
    restart: always

  zabbix-java-gateway:
    image: zabbix/zabbix-java-gateway:alpine-6.0-latest
    networks:
      - zbx_net
    ports:
      - "10052:10052"
    restart: always

networks:
  zbx_net:
    driver: bridge

volumes:
  zabbix_mysql_data:
  zabbix_alertscripts:
  zabbix_externalscripts:
  zabbix_export:
  zabbix_modules:
  zabbix_enc:
  zabbix_ssh_keys:
  zabbix_mibs:
  zabbix_snmptraps:
  zabbix_nginx_ssl:
  zabbix_nginx_modules: