File: //srv/zabbix/docker-compose.yml
services:
  postgres:
    image: postgres:16-alpine
    container_name: zabbix-postgres
    restart: always
    environment:
      POSTGRES_USER: zabbix
      POSTGRES_PASSWORD: zabbix_password
      POSTGRES_DB: zabbix
    volumes:
      - postgres-data:/var/lib/postgresql/data
    networks:
      - zabbix-network
  zabbix-server:
    image: zabbix/zabbix-server-pgsql:ubuntu-7.4-latest
    container_name: zabbix-server
    restart: always
    environment:
      DB_SERVER_HOST: postgres
      POSTGRES_USER: zabbix
      POSTGRES_PASSWORD: zabbix_password
      POSTGRES_DB: zabbix
      ZBX_ENABLE_SNMP_TRAPS: "false"
    ports:
      - "10051:10051"
    depends_on:
      - postgres
    volumes:
      - zabbix-server-data:/var/lib/zabbix
    networks:
      - zabbix-network
  zabbix-web:
    image: zabbix/zabbix-web-nginx-pgsql:ubuntu-7.4-latest
    container_name: zabbix-web
    restart: always
    environment:
      DB_SERVER_HOST: postgres
      POSTGRES_USER: zabbix
      POSTGRES_PASSWORD: zabbix_password
      POSTGRES_DB: zabbix
      ZBX_SERVER_HOST: zabbix-server
      PHP_TZ: Europe/Warsaw
    ports:
      - "8092:8080"
    depends_on:
      - postgres
      - zabbix-server
    networks:
      - zabbix-network
  zabbix-agent:
    image: zabbix/zabbix-agent:ubuntu-7.4-latest
    container_name: zabbix-agent
    restart: always
    environment:
      ZBX_HOSTNAME: "Zabbix server"
      ZBX_SERVER_HOST: zabbix-server
    ports:
      - "10050:10050"
    depends_on:
      - zabbix-server
    networks:
      - zabbix-network
networks:
  zabbix-network:
    driver: bridge
volumes:
  postgres-data:
  zabbix-server-data: