Zabbix server config в Docker

Есть забикс сервер, приложения развёрнуты в докере. Здача внести изменения конфиг(zabbix_server.conf). Копирую этот файл на хостовую машину, вношу изменения, копирую файл назад. Перезапускаю контейнер, но конфиг остаётся старый. Подскажите, что я делаю не так?


Ответы (2 шт):

Автор решения: Andrew Et

Вы вносите изменения в conf файл слепка контейнера. У себя нашел как минимум 4 файла zabbix_server.conf. Поэтому изменения не применяются. введите сюда код

Требуется найти файл docker-config.uml (в моей сборке на Centos 9 - /opt/zabbix/)

→ Ссылка
Автор решения: kernUSR

Читайте официальную документацию! Там есть все ответы!

Если кратко, то у вас есть 2 варианта изменить конфигурацию:

  1. Установить их, используя переменные окружения

    1.1 Если запускаете через командную строку, типа docker run ...., то передавать переменные окружения нужно, с использованием ключа -e. Например, чтобы передать заббиксу настройки подключения к MySQL, параметры передаются следующим образом:

    docker run --name zabbix-server-mysql -t \
           -e DB_SERVER_HOST="mysql-server" \
           -e MYSQL_DATABASE="zabbix" \
           -e MYSQL_USER="zabbix" \
           -e MYSQL_PASSWORD="zabbix_pwd" \
           -e MYSQL_ROOT_PASSWORD="root_pwd" \
           --network=zabbix-net \
           -p 10051:10051 \
           --restart unless-stopped \
           -d zabbix/zabbix-server-mysql
    

    1.2 Если запускаете сервер, с использованием docker compose, то в конфигурационном файл docker-compose.yml можно передать переменные среды в блоке environment:

    services:
      ...
      zabbix-server-mysql:
        image: zabbix/zabbix-server-mysql
        environment:
          DB_SERVER_HOST: "mysql-server"
          MYSQL_DATABASE: "zabbix"
          MYSQL_USER: "zabbix" 
          MYSQL_PASSWORD: "zabbix_pwd" 
          MYSQL_ROOT_PASSWORD: "root_pwd" 
        networks:
          - zabbix-net
        ports:
          - "10051:10051"
        restart: unless-stopped
      ...
    

    или указать путь к .env файлу и определить все параметры в нём

    services:
      ...
      zabbix-server-mysql:
        image: zabbix/zabbix-server-mysql
        env_file: .env
        networks:
          - zabbix-net
        ports:
          - "10051:10051"
        restart: unless-stopped
      ...
    

    Пример .env файла:

    DB_SERVER_HOST="mysql-server"
    MYSQL_DATABASE="zabbix"
    MYSQL_USER="zabbix"
    MYSQL_PASSWORD="zabbix_pwd"
    MYSQL_ROOT_PASSWORD="root_pwd"
    
  2. Примонтировать zabbix_server.conf к контейнеру. Для этого создайте файл конфигурации, например, в /opt/zabbix/zabbix_server.conf, опишите там ВСЕ настройки сервера и примонтируйте его к контейнеру

    2.1 при запуске из консоли

    docker run --name zabbix-server-mysql -t \
           --volume=/opt/zabbix/zabbix_server.conf:/etc/zabbix/zabbix_server.conf
           --network=zabbix-net \
           -p 10051:10051 \
           --restart unless-stopped \
           -d zabbix/zabbix-server-mysql
    

    2.2 в docker-compose.yml

    services:
      ...
      zabbix-server-mysql:
        image: zabbix/zabbix-server-mysql
        volumes:
          - /opt/zabbix/zabbix_server.conf:/etc/zabbix/zabbix_server.conf
        networks:
          - zabbix-net
        ports:
          - "10051:10051"
        restart: unless-stopped
      ...
    
→ Ссылка