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: