Docker Community Forums

Share and learn in the Docker community.

Installation of additional libraries / drivers in an existing container

Hi.
My goal is to install zabbix server on the docker that will be able to monitor the Microsoft SQL Server database. This guide is based on: https://www.zabbix.com/integrations/microsoft_sql. My problem is that I need to install the Microsoft ODBC driver on my Zabbix server which is in the docker. below I am pasting my docker-compose file which contains the complete process of installing zabbix and all the necessary components, i.e. database, zabbix agent and website. Someone can advise me on how to install this ODBC driver in this container with zabbix server?

version: '3.5'
services:
 zabbix-server:
  image: zabbix/zabbix-server-pgsql:ubuntu-5.2-latest
  ports:
   - "10051:10051"
  volumes:
   - /etc/localtime:/etc/localtime:ro
   - ./zbx_env/usr/lib/zabbix/alertscripts:/usr/lib/zabbix/alertscripts:ro
   - ./zbx_env/usr/lib/zabbix/externalscripts:/usr/lib/zabbix/externalscripts:ro
   - ./zbx_env/var/lib/zabbix/export:/var/lib/zabbix/export:rw
   - ./zbx_env/var/lib/zabbix/modules:/var/lib/zabbix/modules:ro
   - ./zbx_env/var/lib/zabbix/enc:/var/lib/zabbix/enc:ro
   - ./zbx_env/var/lib/zabbix/ssh_keys:/var/lib/zabbix/ssh_keys:ro
   - ./zbx_env/var/lib/zabbix/mibs:/var/lib/zabbix/mibs:ro
   - ./zbx_env/var/lib/zabbix/snmptraps:/var/lib/zabbix/snmptraps:ro
#   - ./.ZBX_DB_CA_FILE:/run/secrets/root-ca.pem:ro
#   - ./.ZBX_DB_CERT_FILE:/run/secrets/client-cert.pem:ro
#   - ./.ZBX_DB_KEY_FILE:/run/secrets/client-key.pem:ro
  links:
   - postgres-server:postgres-server
  ulimits:
   nproc: 65535
   nofile:
    soft: 20000
    hard: 40000
  deploy:
   resources:
    limits:
      cpus: '0.70'
      memory: 1G
    reservations:
      cpus: '0.5'
      memory: 512M
  env_file:
   - .env_db_pgsql
   - .env_srv
  secrets:
   - POSTGRES_USER
   - POSTGRES_PASSWORD
  depends_on:
   - postgres-server
  networks:
   zbx_net_backend:
     aliases:
      - zabbix-server
      - zabbix-server-pgsql
      - zabbix-server-ubuntu-pgsql
      - zabbix-server-pgsql-ubuntu
   zbx_net_frontend:
#  devices:
#   - "/dev/ttyUSB0:/dev/ttyUSB0"
  stop_grace_period: 30s
  sysctls:
   - net.ipv4.ip_local_port_range=1024 65000
   - net.ipv4.conf.all.accept_redirects=0
   - net.ipv4.conf.all.secure_redirects=0
   - net.ipv4.conf.all.send_redirects=0
  labels:
   com.zabbix.description: "Zabbix server with PostgreSQL database support"
   com.zabbix.company: "Zabbix LLC"
   com.zabbix.component: "zabbix-server"
   com.zabbix.dbtype: "pgsql"
   com.zabbix.os: "ubuntu"

 zabbix-web-nginx-pgsql:
  image: zabbix/zabbix-web-nginx-pgsql:ubuntu-5.2-latest
  ports:
   - "8081:8080"
   - "8443:8443"
  links:
   - postgres-server:postgres-server
   - zabbix-server:zabbix-server
  volumes:
   - /etc/localtime:/etc/localtime:ro
   - ./zbx_env/etc/ssl/nginx:/etc/ssl/nginx:ro
   - ./zbx_env/usr/share/zabbix/modules/:/usr/share/zabbix/modules/:ro
#   - ./.ZBX_DB_CA_FILE:/run/secrets/root-ca.pem:ro
#   - ./.ZBX_DB_CERT_FILE:/run/secrets/client-cert.pem:ro
#   - ./.ZBX_DB_KEY_FILE:/run/secrets/client-key.pem:ro
  deploy:
   resources:
    limits:
      cpus: '0.70'
      memory: 512M
    reservations:
      cpus: '0.5'
      memory: 256M
  env_file:
   - .env_db_pgsql
   - .env_web
  secrets:
   - POSTGRES_USER
   - POSTGRES_PASSWORD
  depends_on:
   - postgres-server
   - zabbix-server
  healthcheck:
   test: ["CMD", "curl", "-f", "http://localhost:8080/"]
   interval: 10s
   timeout: 5s
   retries: 3
   start_period: 30s
  networks:
   zbx_net_backend:
    aliases:
     - zabbix-web-nginx-pgsql
     - zabbix-web-nginx-ubuntu-pgsql
     - zabbix-web-nginx-pgsql-ubuntu
   zbx_net_frontend:
  stop_grace_period: 10s
  sysctls:
   - net.core.somaxconn=65535
  labels:
   com.zabbix.description: "Zabbix frontend on Nginx web-server with PostgreSQL database support"
   com.zabbix.company: "Zabbix LLC"
   com.zabbix.component: "zabbix-frontend"
   com.zabbix.webserver: "nginx"
   com.zabbix.dbtype: "pgsql"
   com.zabbix.os: "ubuntu"

 zabbix-agent:
  image: zabbix/zabbix-agent:ubuntu-5.2-latest
  ports:
   - "10050:10050"
  volumes:
   - /etc/localtime:/etc/localtime:ro
   - ./zbx_env/etc/zabbix/zabbix_agentd.d:/etc/zabbix/zabbix_agentd.d:ro
   - ./zbx_env/var/lib/zabbix/modules:/var/lib/zabbix/modules:ro
   - ./zbx_env/var/lib/zabbix/enc:/var/lib/zabbix/enc:ro
   - ./zbx_env/var/lib/zabbix/ssh_keys:/var/lib/zabbix/ssh_keys:ro
  links:
   - zabbix-server:zabbix-server
  deploy:
   resources:
    limits:
      cpus: '0.2'
      memory: 128M
    reservations:
      cpus: '0.1'
      memory: 64M
   mode: global
  env_file:
   - .env_agent
  privileged: true
  pid: "host"
  networks:
   zbx_net_backend:
    aliases:
     - zabbix-agent
     - zabbix-agent-passive
     - zabbix-agent-ubuntu
  stop_grace_period: 5s
  labels:
   com.zabbix.description: "Zabbix agent"
   com.zabbix.company: "Zabbix LLC"
   com.zabbix.component: "zabbix-agentd"
   com.zabbix.os: "ubuntu"

 postgres-server:
  image: postgres:latest
#  command: -c ssl=on -c ssl_cert_file=/run/secrets/server-cert.pem -c ssl_key_file=/run/secrets/server-key.pem -c ssl_ca_file=/run/secrets/root-ca.pem
  volumes:
   - ./zbx_env/var/lib/postgresql/data:/var/lib/postgresql/data:rw
   - ./.ZBX_DB_CA_FILE:/run/secrets/root-ca.pem:ro
   - ./.ZBX_DB_CERT_FILE:/run/secrets/server-cert.pem:ro
   - ./.ZBX_DB_KEY_FILE:/run/secrets/server-key.pem:ro
  env_file:
   - .env_db_pgsql
  secrets:
   - POSTGRES_USER
   - POSTGRES_PASSWORD
  stop_grace_period: 1m
  networks:
   zbx_net_backend:
    aliases:
     - postgres-server
     - pgsql-server
     - pgsql-database

 db_data_pgsql:
  image: busybox
  volumes:
   - ./zbx_env/var/lib/postgresql/data:/var/lib/postgresql/data:rw

networks:
  zbx_net_frontend:
    driver: bridge
    driver_opts:
      com.docker.network.enable_ipv6: "false"
    ipam:
      driver: default
      config:
      - subnet: 172.16.238.0/24
  zbx_net_backend:
    driver: bridge
    driver_opts:
      com.docker.network.enable_ipv6: "false"
    internal: true
    ipam:
      driver: default
      config:
      - subnet: 172.16.239.0/24

volumes:
  snmptraps:

secrets:
  MYSQL_USER:
    file: ./.MYSQL_USER
  MYSQL_PASSWORD:
    file: ./.MYSQL_PASSWORD
  MYSQL_ROOT_PASSWORD:
    file: ./.MYSQL_ROOT_PASSWORD
  POSTGRES_USER:
    file: ./.POSTGRES_USER
  POSTGRES_PASSWORD:
    file: ./.POSTGRES_PASSWORD