diff --git a/.env b/.env index 08a6d7227..75e8e1341 100644 --- a/.env +++ b/.env @@ -15,6 +15,7 @@ ZABBIX_WEB_APACHE_MYSQL_IMAGE=zabbix/zabbix-web-apache-mysql ZABBIX_WEB_NGINX_PGSQL_IMAGE=zabbix/zabbix-web-nginx-pgsql ZABBIX_WEB_APACHE_PGSQL_IMAGE=zabbix/zabbix-web-apache-pgsql ZABBIX_AGENT_IMAGE=zabbix/zabbix-agent +ZABBIX_AGENT2_IMAGE=zabbix/zabbix-agent2 ZABBIX_JAVA_GATEWAY_IMAGE=zabbix/zabbix-java-gateway ZABBIX_SNMPTRAPS_IMAGE=zabbix/zabbix-snmptraps @@ -36,6 +37,7 @@ ZABBIX_WEB_NGINX_HTTPS_PORT=443 ZABBIX_WEB_APACHE_HTTP_PORT=8081 ZABBIX_WEB_APACHE_HTTPS_PORT=8443 ZABBIX_AGENT_PORT=10050 +ZABBIX_AGENT2_PORT=10060 ZABBIX_JAVA_GATEWAY_PORT=10052 ZABBIX_SNMPTRAPS_PORT=162 @@ -46,6 +48,8 @@ FRONTEND_ENABLE_IPV6=false BACKEND_NETWORK_DRIVER=default BACKEND_SUBNET=172.16.239.0/24 BACKEND_ENABLE_IPV6=false +DATABASE_NETWORK_ENABLE_IPV6=false +DATABASE_NETWORK_DRIVER=default # Locations DATA_DIRECTORY=./zbx_env diff --git a/compose_databases.yaml b/compose_databases.yaml new file mode 100644 index 000000000..ee178a759 --- /dev/null +++ b/compose_databases.yaml @@ -0,0 +1,75 @@ +version: '3.8' +services: + mysql-server: + image: "${MYSQL_IMAGE}:${MYSQL_IMAGE_TAG}" + command: + - mysqld + - --character-set-server=utf8 + - --collation-server=utf8_bin + - --default-authentication-plugin=mysql_native_password +# - --require-secure-transport +# - --ssl-ca=/run/secrets/root-ca.pem +# - --ssl-cert=/run/secrets/server-cert.pem +# - --ssl-key=/run/secrets/server-key.pem + restart: "${RESTART_POLICY}" + volumes: + - ${DATA_DIRECTORY}/var/lib/mysql:/var/lib/mysql:rw +# - dbsocket:/var/run/mysqld/ + env_file: + - ${ENV_VARS_DIRECTORY}/.env_db_mysql + secrets: + - MYSQL_USER + - MYSQL_PASSWORD + - MYSQL_ROOT_PASSWORD +# - server-key.pem +# - server-cert.pem +# - root-ca.pem + stop_grace_period: 1m + networks: + zbx_net_database: + aliases: + - mysql-server + + postgres-server: + image: "${POSTGRESQL_IMAGE}:${POSTGRESQL_IMAGE_TAG}" +# 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 + restart: "${RESTART_POLICY}" + volumes: + - ${DATA_DIRECTORY}/var/lib/postgresql/data:/var/lib/postgresql/data:rw + - ${ENV_VARS_DIRECTORY}/.ZBX_DB_CA_FILE:/run/secrets/root-ca.pem:ro + - ${ENV_VARS_DIRECTORY}/.ZBX_DB_CERT_FILE:/run/secrets/server-cert.pem:ro + - ${ENV_VARS_DIRECTORY}/.ZBX_DB_KEY_FILE:/run/secrets/server-key.pem:ro + env_file: + - ${ENV_VARS_DIRECTORY}/.env_db_pgsql + secrets: + - POSTGRES_USER + - POSTGRES_PASSWORD + stop_grace_period: 1m + networks: + zbx_net_database: + aliases: + - postgres-server + + db-data-mysql: + image: busybox + volumes: + - ${DATA_DIRECTORY}/var/lib/mysql:/var/lib/mysql:rw + + db-data-pgsql: + image: busybox + volumes: + - ${DATA_DIRECTORY}/var/lib/postgresql/data:/var/lib/postgresql/data:rw + + elasticsearch: + image: "${ELASTICSEARCH_IMAGE}:${ELASTICSEARCH_IMAGE_TAG}" + restart: "${RESTART_POLICY}" + profiles: + - full + - all + environment: + - transport.host=0.0.0.0 + - discovery.zen.minimum_master_nodes=1 + networks: + zbx_net_database: + aliases: + - elasticsearch diff --git a/compose_zabbix_components.yaml b/compose_zabbix_components.yaml new file mode 100644 index 000000000..f0183c25d --- /dev/null +++ b/compose_zabbix_components.yaml @@ -0,0 +1,509 @@ +version: '3.8' +services: + zabbix-server: + init: true + ports: + - "${ZABBIX_SERVER_PORT}:10051" + restart: "${RESTART_POLICY}" + volumes: + - /etc/localtime:/etc/localtime:ro + - ${DATA_DIRECTORY}/usr/lib/zabbix/alertscripts:/usr/lib/zabbix/alertscripts:ro + - ${DATA_DIRECTORY}/usr/lib/zabbix/externalscripts:/usr/lib/zabbix/externalscripts:ro + - ${DATA_DIRECTORY}/var/lib/zabbix/dbscripts:/var/lib/zabbix/dbscripts:ro + - ${DATA_DIRECTORY}/var/lib/zabbix/export:/var/lib/zabbix/export:rw + - ${DATA_DIRECTORY}/var/lib/zabbix/modules:/var/lib/zabbix/modules:ro + - ${DATA_DIRECTORY}/var/lib/zabbix/enc:/var/lib/zabbix/enc:ro + - ${DATA_DIRECTORY}/var/lib/zabbix/ssh_keys:/var/lib/zabbix/ssh_keys:ro + - ${DATA_DIRECTORY}/var/lib/zabbix/mibs:/var/lib/zabbix/mibs:ro + - snmptraps:/var/lib/zabbix/snmptraps:ro + 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_VARS_DIRECTORY}/.env_srv + networks: + zbx_net_database: + aliases: + - zabbix-server + zbx_net_backend: + aliases: + - zabbix-server + zbx_net_frontend: +# devices: +# - "/dev/ttyUSB0:/dev/ttyUSB0" + stop_grace_period: 30s + sysctls: + - net.ipv4.ip_local_port_range=1024 64999 + - net.ipv4.conf.all.accept_redirects=0 + - net.ipv4.conf.all.secure_redirects=0 + - net.ipv4.conf.all.send_redirects=0 + labels: + com.zabbix.company: "Zabbix LLC" + com.zabbix.component: "zabbix-server" + + zabbix-server-mysql: + extends: + file: compose_zabbix_components.yaml + service: zabbix-server + volumes: +# - dbsocket:/var/run/mysqld/ + env_file: + - ${ENV_VARS_DIRECTORY}/.env_db_mysql + secrets: + - MYSQL_USER + - MYSQL_PASSWORD + - MYSQL_ROOT_USER + - MYSQL_ROOT_PASSWORD +# - client-key.pem +# - client-cert.pem +# - root-ca.pem + networks: + zbx_net_backend: + aliases: + - zabbix-server-mysql + labels: + com.zabbix.description: "Zabbix server with MySQL database support" + com.zabbix.dbtype: "mysql" + + zabbix-server-pgsql: + extends: + file: compose_zabbix_components.yaml + service: zabbix-server + volumes: +# - ${ENV_VARS_DIRECTORY}/.ZBX_DB_CA_FILE:/run/secrets/root-ca.pem:ro +# - ${ENV_VARS_DIRECTORY}/.ZBX_DB_CERT_FILE:/run/secrets/client-cert.pem:ro +# - ${ENV_VARS_DIRECTORY}/.ZBX_DB_KEY_FILE:/run/secrets/client-key.pem:ro + env_file: + - ${ENV_VARS_DIRECTORY}/.env_db_pgsql + secrets: + - POSTGRES_USER + - POSTGRES_PASSWORD + networks: + zbx_net_backend: + aliases: + - zabbix-server-pgsql + labels: + com.zabbix.description: "Zabbix server with PostgreSQL database support" + com.zabbix.dbtype: "pgsql" + + zabbix-proxy: + init: true + profiles: + - all + restart: "${RESTART_POLICY}" + volumes: + - /etc/localtime:/etc/localtime:ro + - ${DATA_DIRECTORY}/usr/lib/zabbix/externalscripts:/usr/lib/zabbix/externalscripts:ro + - ${DATA_DIRECTORY}/var/lib/zabbix/modules:/var/lib/zabbix/modules:ro + - ${DATA_DIRECTORY}/var/lib/zabbix/enc:/var/lib/zabbix/enc:ro + - ${DATA_DIRECTORY}/var/lib/zabbix/ssh_keys:/var/lib/zabbix/ssh_keys:ro + - ${DATA_DIRECTORY}/var/lib/zabbix/mibs:/var/lib/zabbix/mibs:ro + - snmptraps:/var/lib/zabbix/snmptraps:ro + ulimits: + nproc: 65535 + nofile: + soft: 20000 + hard: 40000 + deploy: + resources: + limits: + cpus: '0.70' + memory: 512M + reservations: + cpus: '0.3' + memory: 256M + env_file: + - ${ENV_VARS_DIRECTORY}/.env_prx + networks: + zbx_net_backend: + zbx_net_frontend: + stop_grace_period: 30s + sysctls: + - net.ipv4.ip_local_port_range=1024 64999 + - net.ipv4.conf.all.accept_redirects=0 + - net.ipv4.conf.all.secure_redirects=0 + - net.ipv4.conf.all.send_redirects=0 + labels: + com.zabbix.company: "Zabbix LLC" + com.zabbix.component: "zabbix-proxy" + + zabbix-proxy-sqlite3: + extends: + file: compose_zabbix_components.yaml + service: zabbix-proxy + ports: + - "${ZABBIX_PROXY_SQLITE3_PORT}:10051" + env_file: + - ${ENV_VARS_DIRECTORY}/.env_prx_sqlite3 + networks: + zbx_net_backend: + aliases: + - zabbix-proxy-sqlite3 + labels: + com.zabbix.description: "Zabbix proxy with SQLite3 database support" + com.zabbix.dbtype: "sqlite3" + + zabbix-proxy-mysql: + extends: + file: compose_zabbix_components.yaml + service: zabbix-proxy + ports: + - "${ZABBIX_PROXY_MYSQL_PORT}:10051" + volumes: +# - dbsocket:/var/run/mysqld/ + env_file: + - ${ENV_VARS_DIRECTORY}/.env_db_mysql_proxy + - ${ENV_VARS_DIRECTORY}/.env_prx_mysql + secrets: + - MYSQL_USER + - MYSQL_PASSWORD + - MYSQL_ROOT_USER + - MYSQL_ROOT_PASSWORD +# - client-key.pem +# - client-cert.pem +# - root-ca.pem + networks: + zbx_net_database: + aliases: + - zabbix-proxy-mysql + zbx_net_backend: + aliases: + - zabbix-proxy-mysql + labels: + com.zabbix.description: "Zabbix proxy with MySQL database support" + com.zabbix.dbtype: "mysql" + + zabbix-web-apache: + profiles: + - all + ports: + - "${ZABBIX_WEB_APACHE_HTTP_PORT}:8080" + - "${ZABBIX_WEB_APACHE_HTTPS_PORT}:8443" + restart: "${RESTART_POLICY}" + volumes: + - /etc/localtime:/etc/localtime:ro + - ${DATA_DIRECTORY}/etc/ssl/apache2:/etc/ssl/apache2:ro + - ${DATA_DIRECTORY}/usr/share/zabbix/modules/:/usr/share/zabbix/modules/:ro + deploy: + resources: + limits: + cpus: '0.70' + memory: 512M + reservations: + cpus: '0.5' + memory: 256M + env_file: + - ${ENV_VARS_DIRECTORY}/.env_web + healthcheck: + test: ["CMD", "curl", "-f", "http://localhost:8080/"] + interval: 10s + timeout: 5s + retries: 3 + start_period: 30s + networks: + zbx_net_database: + zbx_net_backend: + zbx_net_frontend: + stop_grace_period: 10s + sysctls: + - net.core.somaxconn=65535 + labels: + com.zabbix.company: "Zabbix LLC" + com.zabbix.component: "zabbix-frontend" + com.zabbix.webserver: "apache2" + + zabbix-web-apache-mysql: + extends: + file: compose_zabbix_components.yaml + service: zabbix-web-apache + volumes: +# - dbsocket:/var/run/mysqld/ + env_file: + - ${ENV_VARS_DIRECTORY}/.env_db_mysql + secrets: + - MYSQL_USER + - MYSQL_PASSWORD +# - client-key.pem +# - client-cert.pem +# - root-ca.pem + labels: + com.zabbix.description: "Zabbix frontend on Apache web-server with MySQL database support" + com.zabbix.dbtype: "mysql" + + zabbix-web-apache-pgsql: + extends: + file: compose_zabbix_components.yaml + service: zabbix-web-apache + volumes: +# - ${ENV_VARS_DIRECTORY}/.ZBX_DB_CA_FILE:/run/secrets/root-ca.pem:ro +# - ${ENV_VARS_DIRECTORY}/.ZBX_DB_CERT_FILE:/run/secrets/client-cert.pem:ro +# - ${ENV_VARS_DIRECTORY}/.ZBX_DB_KEY_FILE:/run/secrets/client-key.pem:ro + env_file: + - ${ENV_VARS_DIRECTORY}/.env_db_pgsql + secrets: + - POSTGRES_USER + - POSTGRES_PASSWORD + networks: + zbx_net_backend: + aliases: + - zabbix-web-apache-pgsql + labels: + com.zabbix.description: "Zabbix frontend on Apache web-server with PostgreSQL database support" + com.zabbix.dbtype: "pgsql" + + zabbix-web-nginx: + ports: + - "${ZABBIX_WEB_NGINX_HTTP_PORT}:8080" + - "${ZABBIX_WEB_NGINX_HTTPS_PORT}:8443" + restart: "${RESTART_POLICY}" + volumes: + - /etc/localtime:/etc/localtime:ro + - ${DATA_DIRECTORY}/etc/ssl/nginx:/etc/ssl/nginx:ro + - ${DATA_DIRECTORY}/usr/share/zabbix/modules/:/usr/share/zabbix/modules/:ro + deploy: + resources: + limits: + cpus: '0.70' + memory: 512M + reservations: + cpus: '0.5' + memory: 256M + env_file: + - ${ENV_VARS_DIRECTORY}/.env_web + healthcheck: + test: ["CMD", "curl", "-f", "http://localhost:8080/ping"] + interval: 10s + timeout: 5s + retries: 3 + start_period: 30s + networks: + zbx_net_database: + zbx_net_backend: + zbx_net_frontend: + stop_grace_period: 10s + sysctls: + - net.core.somaxconn=65535 + labels: + com.zabbix.company: "Zabbix LLC" + com.zabbix.component: "zabbix-frontend" + com.zabbix.webserver: "nginx" + + zabbix-web-nginx-mysql: + extends: + file: compose_zabbix_components.yaml + service: zabbix-web-nginx + volumes: +# - dbsocket:/var/run/mysqld/ + env_file: + - ${ENV_VARS_DIRECTORY}/.env_db_mysql + secrets: + - MYSQL_USER + - MYSQL_PASSWORD +# - client-key.pem +# - client-cert.pem +# - root-ca.pem + networks: + zbx_net_backend: + aliases: + - zabbix-web-nginx-mysql + labels: + com.zabbix.description: "Zabbix frontend on Nginx web-server with MySQL database support" + com.zabbix.dbtype: "mysql" + + zabbix-web-nginx-pgsql: + extends: + file: compose_zabbix_components.yaml + service: zabbix-web-nginx + volumes: +# - ${ENV_VARS_DIRECTORY}/.ZBX_DB_CA_FILE:/run/secrets/root-ca.pem:ro +# - ${ENV_VARS_DIRECTORY}/.ZBX_DB_CERT_FILE:/run/secrets/client-cert.pem:ro +# - ${ENV_VARS_DIRECTORY}/.ZBX_DB_KEY_FILE:/run/secrets/client-key.pem:ro + env_file: + - ${ENV_VARS_DIRECTORY}/.env_db_pgsql + secrets: + - POSTGRES_USER + - POSTGRES_PASSWORD + networks: + zbx_net_backend: + aliases: + - zabbix-web-nginx-pgsql + labels: + com.zabbix.description: "Zabbix frontend on Nginx web-server with PostgreSQL database support" + com.zabbix.dbtype: "pgsql" + + zabbix-agent: + init: true + profiles: + - full + - all + ports: + - "${ZABBIX_AGENT_PORT}:10050" + restart: "${RESTART_POLICY}" + volumes: + - /etc/localtime:/etc/localtime:ro + - ${DATA_DIRECTORY}/etc/zabbix/zabbix_agentd.d:/etc/zabbix/zabbix_agentd.d:ro + - ${DATA_DIRECTORY}/var/lib/zabbix/modules:/var/lib/zabbix/modules:ro + - ${DATA_DIRECTORY}/var/lib/zabbix/enc:/var/lib/zabbix/enc:ro + - ${DATA_DIRECTORY}/var/lib/zabbix/ssh_keys:/var/lib/zabbix/ssh_keys:ro + deploy: + resources: + limits: + cpus: '0.2' + memory: 128M + reservations: + cpus: '0.1' + memory: 64M + mode: global + env_file: + - ${ENV_VARS_DIRECTORY}/.env_agent + privileged: true + pid: "host" + networks: + zbx_net_backend: + aliases: + - zabbix-agent + - zabbix-agent-passive + stop_grace_period: 5s + labels: + com.zabbix.description: "Zabbix agent" + com.zabbix.company: "Zabbix LLC" + com.zabbix.component: "zabbix-agentd" + + zabbix-agent2: + init: true + profiles: + - full + - all + ports: + - "${ZABBIX_AGENT2_PORT}:10050" + restart: "${RESTART_POLICY}" + volumes: + - /etc/localtime:/etc/localtime:ro + - ${DATA_DIRECTORY}/etc/zabbix/zabbix_agentd.d:/etc/zabbix/zabbix_agentd.d:ro + - ${DATA_DIRECTORY}/var/lib/zabbix/modules:/var/lib/zabbix/modules:ro + - ${DATA_DIRECTORY}/var/lib/zabbix/enc:/var/lib/zabbix/enc:ro + - ${DATA_DIRECTORY}/var/lib/zabbix/ssh_keys:/var/lib/zabbix/ssh_keys:ro + deploy: + resources: + limits: + cpus: '0.2' + memory: 128M + reservations: + cpus: '0.1' + memory: 64M + mode: global + env_file: + - ${ENV_VARS_DIRECTORY}/.env_agent + privileged: true + pid: "host" + networks: + zbx_net_backend: + aliases: + - zabbix-agent + - zabbix-agent-passive + stop_grace_period: 5s + labels: + com.zabbix.description: "Zabbix agent 2" + com.zabbix.company: "Zabbix LLC" + com.zabbix.component: "zabbix-agent2" + + zabbix-java-gateway: + profiles: + - full + - all + ports: + - "${ZABBIX_JAVA_GATEWAY_PORT}:10052" + restart: "${RESTART_POLICY}" + deploy: + resources: + limits: + cpus: '0.5' + memory: 512M + reservations: + cpus: '0.25' + memory: 256M + env_file: + - ${ENV_VARS_DIRECTORY}/.env_java + networks: + zbx_net_backend: + aliases: + - zabbix-java-gateway + stop_grace_period: 5s + labels: + com.zabbix.description: "Zabbix Java Gateway" + com.zabbix.company: "Zabbix LLC" + com.zabbix.component: "java-gateway" + + zabbix-snmptraps: +# Override snmptrapd command arguments to receive SNMP traps by DNS +# It must be done with ZBX_SNMP_TRAP_USE_DNS=true environment variable +# command: /usr/sbin/snmptrapd -C -c /etc/snmp/snmptrapd.conf -Lo -A + profiles: + - full + - all + ports: + - "${ZABBIX_SNMPTRAPS_PORT}:1162/udp" + restart: "${RESTART_POLICY}" + volumes: + - snmptraps:/var/lib/zabbix/snmptraps:rw + deploy: + resources: + limits: + cpus: '0.5' + memory: 256M + reservations: + cpus: '0.25' + memory: 128M + env_file: + - ${ENV_VARS_DIRECTORY}/.env_snmptraps + networks: + zbx_net_frontend: + aliases: + - zabbix-snmptraps + zbx_net_backend: + stop_grace_period: 5s + labels: + com.zabbix.description: "Zabbix snmptraps" + com.zabbix.company: "Zabbix LLC" + com.zabbix.component: "snmptraps" + + zabbix-web-service: + profiles: + - full + - all + ports: + - "${ZABBIX_WEB_SERVICE_PORT}:10053" + restart: "${RESTART_POLICY}" + volumes: + - ${DATA_DIRECTORY}/var/lib/zabbix/enc:/var/lib/zabbix/enc:ro + security_opt: + - seccomp:${ENV_VARS_DIRECTORY}/chrome_dp.json + deploy: + resources: + limits: + cpus: '0.5' + memory: 512M + reservations: + cpus: '0.25' + memory: 256M + env_file: + - ${ENV_VARS_DIRECTORY}/.env_web_service + networks: + zbx_net_backend: + aliases: + - zabbix-web-service + stop_grace_period: 5s + labels: + com.zabbix.description: "Zabbix web service" + com.zabbix.company: "Zabbix LLC" + com.zabbix.component: "web-service" diff --git a/docker-compose_v3_alpine_mysql_latest.yaml b/docker-compose_v3_alpine_mysql_latest.yaml index 760fc34bf..80ac50162 100644 --- a/docker-compose_v3_alpine_mysql_latest.yaml +++ b/docker-compose_v3_alpine_mysql_latest.yaml @@ -1,445 +1,103 @@ version: '3.8' services: zabbix-server: + extends: + file: compose_zabbix_components.yaml + service: zabbix-server-mysql image: "${ZABBIX_SERVER_MYSQL_IMAGE}:${ZABBIX_ALPINE_IMAGE_TAG}${ZABBIX_IMAGE_TAG_POSTFIX}" - init: true - ports: - - "${ZABBIX_SERVER_PORT}:10051" - restart: "${RESTART_POLICY}" volumes: - - /etc/localtime:/etc/localtime:ro - /etc/timezone:/etc/timezone:ro -# - dbsocket:/var/run/mysqld/ - - ${DATA_DIRECTORY}/usr/lib/zabbix/alertscripts:/usr/lib/zabbix/alertscripts:ro - - ${DATA_DIRECTORY}/usr/lib/zabbix/externalscripts:/usr/lib/zabbix/externalscripts:ro - - ${DATA_DIRECTORY}/var/lib/zabbix/dbscripts:/var/lib/zabbix/dbscripts:ro - - ${DATA_DIRECTORY}/var/lib/zabbix/export:/var/lib/zabbix/export:rw - - ${DATA_DIRECTORY}/var/lib/zabbix/modules:/var/lib/zabbix/modules:ro - - ${DATA_DIRECTORY}/var/lib/zabbix/enc:/var/lib/zabbix/enc:ro - - ${DATA_DIRECTORY}/var/lib/zabbix/ssh_keys:/var/lib/zabbix/ssh_keys:ro - - ${DATA_DIRECTORY}/var/lib/zabbix/mibs:/var/lib/zabbix/mibs:ro - - snmptraps:/var/lib/zabbix/snmptraps:rw - 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_VARS_DIRECTORY}/.env_db_mysql - - ${ENV_VARS_DIRECTORY}/.env_srv - secrets: - - MYSQL_USER - - MYSQL_PASSWORD - - MYSQL_ROOT_USER - - MYSQL_ROOT_PASSWORD -# - client-key.pem -# - client-cert.pem -# - root-ca.pem depends_on: - mysql-server - networks: - zbx_net_backend: - aliases: - - zabbix-server - - zabbix-server-mysql - zbx_net_frontend: -# devices: -# - "/dev/ttyUSB0:/dev/ttyUSB0" - stop_grace_period: 30s - sysctls: - - net.ipv4.ip_local_port_range=1024 64999 - - 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 MySQL database support" - com.zabbix.company: "Zabbix LLC" - com.zabbix.component: "zabbix-server" - com.zabbix.dbtype: "mysql" com.zabbix.os: "${ALPINE_OS_TAG}" zabbix-proxy-sqlite3: + extends: + file: compose_zabbix_components.yaml + service: zabbix-proxy-sqlite3 image: "${ZABBIX_PROXY_SQLITE3_IMAGE}:${ZABBIX_ALPINE_IMAGE_TAG}${ZABBIX_IMAGE_TAG_POSTFIX}" - init: true - profiles: - - all - ports: - - "${ZABBIX_PROXY_SQLITE3_PORT}:10051" - restart: "${RESTART_POLICY}" volumes: - - /etc/localtime:/etc/localtime:ro - /etc/timezone:/etc/timezone:ro - - ${DATA_DIRECTORY}/usr/lib/zabbix/externalscripts:/usr/lib/zabbix/externalscripts:ro - - ${DATA_DIRECTORY}/var/lib/zabbix/modules:/var/lib/zabbix/modules:ro - - ${DATA_DIRECTORY}/var/lib/zabbix/enc:/var/lib/zabbix/enc:ro - - ${DATA_DIRECTORY}/var/lib/zabbix/ssh_keys:/var/lib/zabbix/ssh_keys:ro - - ${DATA_DIRECTORY}/var/lib/zabbix/mibs:/var/lib/zabbix/mibs:ro - - snmptraps:/var/lib/zabbix/snmptraps:rw - ulimits: - nproc: 65535 - nofile: - soft: 20000 - hard: 40000 - deploy: - resources: - limits: - cpus: '0.70' - memory: 512M - reservations: - cpus: '0.3' - memory: 256M - env_file: - - ${ENV_VARS_DIRECTORY}/.env_prx - - ${ENV_VARS_DIRECTORY}/.env_prx_sqlite3 - depends_on: - - zabbix-java-gateway - - zabbix-snmptraps - networks: - zbx_net_backend: - aliases: - - zabbix-proxy-sqlite3 - zbx_net_frontend: - stop_grace_period: 30s labels: - com.zabbix.description: "Zabbix proxy with SQLite3 database support" - com.zabbix.company: "Zabbix LLC" - com.zabbix.component: "zabbix-proxy" - com.zabbix.dbtype: "sqlite3" com.zabbix.os: "${ALPINE_OS_TAG}" zabbix-proxy-mysql: + extends: + file: compose_zabbix_components.yaml + service: zabbix-proxy-mysql image: "${ZABBIX_PROXY_MYSQL_IMAGE}:${ZABBIX_ALPINE_IMAGE_TAG}${ZABBIX_IMAGE_TAG_POSTFIX}" - init: true - profiles: - - all - ports: - - "${ZABBIX_PROXY_MYSQL_PORT}:10051" - restart: "${RESTART_POLICY}" volumes: - - /etc/localtime:/etc/localtime:ro - /etc/timezone:/etc/timezone:ro -# - dbsocket:/var/run/mysqld/ - - ${DATA_DIRECTORY}/usr/lib/zabbix/externalscripts:/usr/lib/zabbix/externalscripts:ro - - ${DATA_DIRECTORY}/var/lib/zabbix/modules:/var/lib/zabbix/modules:ro - - ${DATA_DIRECTORY}/var/lib/zabbix/enc:/var/lib/zabbix/enc:ro - - ${DATA_DIRECTORY}/var/lib/zabbix/ssh_keys:/var/lib/zabbix/ssh_keys:ro - - ${DATA_DIRECTORY}/var/lib/zabbix/mibs:/var/lib/zabbix/mibs:ro - - snmptraps:/var/lib/zabbix/snmptraps:rw - ulimits: - nproc: 65535 - nofile: - soft: 20000 - hard: 40000 - deploy: - resources: - limits: - cpus: '0.70' - memory: 512M - reservations: - cpus: '0.3' - memory: 256M - env_file: - - ${ENV_VARS_DIRECTORY}/.env_db_mysql_proxy - - ${ENV_VARS_DIRECTORY}/.env_prx - - ${ENV_VARS_DIRECTORY}/.env_prx_mysql depends_on: - mysql-server - - zabbix-java-gateway - - zabbix-snmptraps - secrets: - - MYSQL_USER - - MYSQL_PASSWORD - - MYSQL_ROOT_USER - - MYSQL_ROOT_PASSWORD -# - client-key.pem -# - client-cert.pem -# - root-ca.pem - networks: - zbx_net_backend: - aliases: - - zabbix-proxy-mysql - zbx_net_frontend: - stop_grace_period: 30s labels: - com.zabbix.description: "Zabbix proxy with MySQL database support" - com.zabbix.company: "Zabbix LLC" - com.zabbix.component: "zabbix-proxy" - com.zabbix.dbtype: "mysql" com.zabbix.os: "${ALPINE_OS_TAG}" zabbix-web-apache-mysql: + extends: + file: compose_zabbix_components.yaml + service: zabbix-web-apache-mysql image: "${ZABBIX_WEB_APACHE_MYSQL_IMAGE}:${ZABBIX_ALPINE_IMAGE_TAG}${ZABBIX_IMAGE_TAG_POSTFIX}" - profiles: - - all - ports: - - "${ZABBIX_WEB_APACHE_HTTP_PORT}:8080" - - "${ZABBIX_WEB_APACHE_HTTPS_PORT}:8443" - restart: "${RESTART_POLICY}" volumes: - - /etc/localtime:/etc/localtime:ro - /etc/timezone:/etc/timezone:ro -# - dbsocket:/var/run/mysqld/ - - ${DATA_DIRECTORY}/etc/ssl/apache2:/etc/ssl/apache2:ro - - ${DATA_DIRECTORY}/usr/share/zabbix/modules/:/usr/share/zabbix/modules/:ro - deploy: - resources: - limits: - cpus: '0.70' - memory: 512M - reservations: - cpus: '0.5' - memory: 256M - env_file: - - ${ENV_VARS_DIRECTORY}/.env_db_mysql - - ${ENV_VARS_DIRECTORY}/.env_web - secrets: - - MYSQL_USER - - MYSQL_PASSWORD -# - client-key.pem -# - client-cert.pem -# - root-ca.pem depends_on: - mysql-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-apache-mysql - zbx_net_frontend: - stop_grace_period: 10s - sysctls: - - net.core.somaxconn=65535 labels: - com.zabbix.description: "Zabbix frontend on Apache web-server with MySQL database support" - com.zabbix.company: "Zabbix LLC" - com.zabbix.component: "zabbix-frontend" - com.zabbix.webserver: "apache2" - com.zabbix.dbtype: "mysql" com.zabbix.os: "${ALPINE_OS_TAG}" zabbix-web-nginx-mysql: + extends: + file: compose_zabbix_components.yaml + service: zabbix-web-nginx-mysql image: "${ZABBIX_WEB_NGINX_MYSQL_IMAGE}:${ZABBIX_ALPINE_IMAGE_TAG}${ZABBIX_IMAGE_TAG_POSTFIX}" - ports: - - "${ZABBIX_WEB_NGINX_HTTP_PORT}:8080" - - "${ZABBIX_WEB_NGINX_HTTPS_PORT}:8443" - restart: "${RESTART_POLICY}" volumes: - - /etc/localtime:/etc/localtime:ro - /etc/timezone:/etc/timezone:ro -# - dbsocket:/var/run/mysqld/ - - ${DATA_DIRECTORY}/etc/ssl/nginx:/etc/ssl/nginx:ro - - ${DATA_DIRECTORY}/usr/share/zabbix/modules/:/usr/share/zabbix/modules/:ro - deploy: - resources: - limits: - cpus: '0.70' - memory: 512M - reservations: - cpus: '0.5' - memory: 256M - env_file: - - ${ENV_VARS_DIRECTORY}/.env_db_mysql - - ${ENV_VARS_DIRECTORY}/.env_web - secrets: - - MYSQL_USER - - MYSQL_PASSWORD -# - client-key.pem -# - client-cert.pem -# - root-ca.pem depends_on: - mysql-server - - zabbix-server - healthcheck: - test: ["CMD", "curl", "-f", "http://localhost:8080/ping"] - interval: 10s - timeout: 5s - retries: 3 - start_period: 30s - networks: - zbx_net_backend: - aliases: - - zabbix-web-nginx-mysql - zbx_net_frontend: - stop_grace_period: 10s - sysctls: - - net.core.somaxconn=65535 labels: - com.zabbix.description: "Zabbix frontend on Nginx web-server with MySQL database support" - com.zabbix.company: "Zabbix LLC" - com.zabbix.component: "zabbix-frontend" - com.zabbix.webserver: "nginx" - com.zabbix.dbtype: "mysql" com.zabbix.os: "${ALPINE_OS_TAG}" zabbix-agent: + extends: + file: compose_zabbix_components.yaml + service: zabbix-agent image: "${ZABBIX_AGENT_IMAGE}:${ZABBIX_ALPINE_IMAGE_TAG}${ZABBIX_IMAGE_TAG_POSTFIX}" - init: true - profiles: - - full - - all - ports: - - "${ZABBIX_AGENT_PORT}:10050" - restart: "${RESTART_POLICY}" volumes: - - /etc/localtime:/etc/localtime:ro - /etc/timezone:/etc/timezone:ro - - ${DATA_DIRECTORY}/etc/zabbix/zabbix_agentd.d:/etc/zabbix/zabbix_agentd.d:ro - - ${DATA_DIRECTORY}/var/lib/zabbix/modules:/var/lib/zabbix/modules:ro - - ${DATA_DIRECTORY}/var/lib/zabbix/enc:/var/lib/zabbix/enc:ro - - ${DATA_DIRECTORY}/var/lib/zabbix/ssh_keys:/var/lib/zabbix/ssh_keys:ro - deploy: - resources: - limits: - cpus: '0.2' - memory: 128M - reservations: - cpus: '0.1' - memory: 64M - mode: global - env_file: - - ${ENV_VARS_DIRECTORY}/.env_agent - privileged: true - pid: "host" - networks: - zbx_net_backend: - aliases: - - zabbix-agent - - zabbix-agent-passive - stop_grace_period: 5s labels: - com.zabbix.description: "Zabbix agent" - com.zabbix.company: "Zabbix LLC" - com.zabbix.component: "zabbix-agentd" com.zabbix.os: "${ALPINE_OS_TAG}" zabbix-java-gateway: + extends: + file: compose_zabbix_components.yaml + service: zabbix-java-gateway image: "${ZABBIX_JAVA_GATEWAY_IMAGE}:${ZABBIX_ALPINE_IMAGE_TAG}${ZABBIX_IMAGE_TAG_POSTFIX}" - profiles: - - full - - all - ports: - - "${ZABBIX_JAVA_GATEWAY_PORT}:10052" - restart: "${RESTART_POLICY}" - deploy: - resources: - limits: - cpus: '0.5' - memory: 512M - reservations: - cpus: '0.25' - memory: 256M - env_file: - - ${ENV_VARS_DIRECTORY}/.env_java - networks: - zbx_net_backend: - aliases: - - zabbix-java-gateway - stop_grace_period: 5s labels: - com.zabbix.description: "Zabbix Java Gateway" - com.zabbix.company: "Zabbix LLC" - com.zabbix.component: "java-gateway" com.zabbix.os: "${ALPINE_OS_TAG}" zabbix-snmptraps: + extends: + file: compose_zabbix_components.yaml + service: zabbix-snmptraps image: "${ZABBIX_SNMPTRAPS_IMAGE}:${ZABBIX_ALPINE_IMAGE_TAG}${ZABBIX_IMAGE_TAG_POSTFIX}" -# Override snmptrapd command arguments to receive SNMP traps by DNS -# It must be done with ZBX_SNMP_TRAP_USE_DNS=true environment variable -# command: /usr/sbin/snmptrapd -C -c /etc/snmp/snmptrapd.conf -Lo -A - profiles: - - full - - all - ports: - - "${ZABBIX_SNMPTRAPS_PORT}:1162/udp" - restart: "${RESTART_POLICY}" - volumes: - - snmptraps:/var/lib/zabbix/snmptraps:rw - deploy: - resources: - limits: - cpus: '0.5' - memory: 256M - reservations: - cpus: '0.25' - memory: 128M - env_file: - - ${ENV_VARS_DIRECTORY}/.env_snmptraps - networks: - zbx_net_frontend: - aliases: - - zabbix-snmptraps - zbx_net_backend: - stop_grace_period: 5s labels: - com.zabbix.description: "Zabbix snmptraps" - com.zabbix.company: "Zabbix LLC" - com.zabbix.component: "snmptraps" com.zabbix.os: "${ALPINE_OS_TAG}" mysql-server: - image: "${MYSQL_IMAGE}:${MYSQL_IMAGE_TAG}" - command: - - mysqld - - --character-set-server=utf8 - - --collation-server=utf8_bin - - --default-authentication-plugin=mysql_native_password -# - --require-secure-transport -# - --ssl-ca=/run/secrets/root-ca.pem -# - --ssl-cert=/run/secrets/server-cert.pem -# - --ssl-key=/run/secrets/server-key.pem - restart: "${RESTART_POLICY}" - volumes: - - ${DATA_DIRECTORY}/var/lib/mysql:/var/lib/mysql:rw -# - dbsocket:/var/run/mysqld/ - env_file: - - ${ENV_VARS_DIRECTORY}/.env_db_mysql - secrets: - - MYSQL_USER - - MYSQL_PASSWORD - - MYSQL_ROOT_PASSWORD -# - server-key.pem -# - server-cert.pem -# - root-ca.pem - stop_grace_period: 1m - networks: - zbx_net_backend: - aliases: - - mysql-server - - zabbix-database - - mysql-database + extends: + file: compose_databases.yaml + service: mysql-server - db_data_mysql: - image: busybox - volumes: - - ${DATA_DIRECTORY}/var/lib/mysql:/var/lib/mysql:rw + db-data-mysql: + extends: + file: compose_databases.yaml + service: db-data-mysql # elasticsearch: -# image: "${ELASTICSEARCH_IMAGE}:${ELASTICSEARCH_IMAGE_TAG}" -# restart: "${RESTART_POLICY}" -# profiles: -# - full -# - all -# environment: -# - transport.host=0.0.0.0 -# - discovery.zen.minimum_master_nodes=1 -# networks: -# zbx_net_backend: -# aliases: -# - elasticsearch +# extends: +# file: compose_databases.yaml +# service: elasticsearch networks: zbx_net_frontend: @@ -459,6 +117,13 @@ networks: driver: "${BACKEND_NETWORK_DRIVER}" config: - subnet: "${BACKEND_SUBNET}" + zbx_net_database: + driver: bridge + driver_opts: + com.docker.network.enable_ipv6: "${DATABASE_NETWORK_ENABLE_IPV6}" + internal: true + ipam: + driver: "${DATABASE_NETWORK_DRIVER}" volumes: snmptraps: diff --git a/docker-compose_v3_alpine_mysql_local.yaml b/docker-compose_v3_alpine_mysql_local.yaml index 871879a02..71d196785 100644 --- a/docker-compose_v3_alpine_mysql_local.yaml +++ b/docker-compose_v3_alpine_mysql_local.yaml @@ -32,6 +32,9 @@ services: - zabbix-build-base zabbix-server: + extends: + file: compose_zabbix_components.yaml + service: zabbix-server-mysql build: context: ./Dockerfiles/server-mysql/${ALPINE_OS_TAG_SHORT} cache_from: @@ -39,72 +42,18 @@ services: args: BUILD_BASE_IMAGE: ${BUILD_BASE_MYSQL_IMAGE}:${ZABBIX_ALPINE_IMAGE_TAG}${ZABBIX_LOCAL_IMAGE_TAG_POSTFIX} image: zabbix-server-mysql:${ZABBIX_ALPINE_IMAGE_TAG}${ZABBIX_LOCAL_IMAGE_TAG_POSTFIX} - init: true - ports: - - "${ZABBIX_SERVER_PORT}:10051" - restart: "${RESTART_POLICY}" volumes: - - /etc/localtime:/etc/localtime:ro - /etc/timezone:/etc/timezone:ro -# - dbsocket:/var/run/mysqld/ - - ${DATA_DIRECTORY}/usr/lib/zabbix/alertscripts:/usr/lib/zabbix/alertscripts:ro - - ${DATA_DIRECTORY}/usr/lib/zabbix/externalscripts:/usr/lib/zabbix/externalscripts:ro - - ${DATA_DIRECTORY}/var/lib/zabbix/dbscripts:/var/lib/zabbix/dbscripts:ro - - ${DATA_DIRECTORY}/var/lib/zabbix/export:/var/lib/zabbix/export:rw - - ${DATA_DIRECTORY}/var/lib/zabbix/modules:/var/lib/zabbix/modules:ro - - ${DATA_DIRECTORY}/var/lib/zabbix/enc:/var/lib/zabbix/enc:ro - - ${DATA_DIRECTORY}/var/lib/zabbix/ssh_keys:/var/lib/zabbix/ssh_keys:ro - - ${DATA_DIRECTORY}/var/lib/zabbix/mibs:/var/lib/zabbix/mibs:ro - - snmptraps:/var/lib/zabbix/snmptraps:rw - 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_VARS_DIRECTORY}/.env_db_mysql - - ${ENV_VARS_DIRECTORY}/.env_srv - secrets: - - MYSQL_USER - - MYSQL_PASSWORD - - MYSQL_ROOT_USER - - MYSQL_ROOT_PASSWORD -# - client-key.pem -# - client-cert.pem -# - root-ca.pem depends_on: - mysql-server - zabbix-build-mysql - networks: - zbx_net_backend: - aliases: - - zabbix-server - - zabbix-server-mysql - zbx_net_frontend: -# devices: -# - "/dev/ttyUSB0:/dev/ttyUSB0" - stop_grace_period: 30s - sysctls: - - net.ipv4.ip_local_port_range=1024 64999 - - 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 MySQL database support" - com.zabbix.company: "Zabbix LLC" - com.zabbix.component: "zabbix-server" - com.zabbix.dbtype: "mysql" com.zabbix.os: "${ALPINE_OS_TAG}" zabbix-proxy-sqlite3: + extends: + file: compose_zabbix_components.yaml + service: zabbix-proxy-sqlite3 build: context: ./Dockerfiles/proxy-sqlite3/${ALPINE_OS_TAG_SHORT} cache_from: @@ -112,55 +61,17 @@ services: args: BUILD_BASE_IMAGE: ${BUILD_BASE_SQLITE3_IMAGE}:${ZABBIX_ALPINE_IMAGE_TAG}${ZABBIX_LOCAL_IMAGE_TAG_POSTFIX} image: zabbix-proxy-sqlite3:${ZABBIX_ALPINE_IMAGE_TAG}${ZABBIX_LOCAL_IMAGE_TAG_POSTFIX} - init: true - profiles: - - all - ports: - - "${ZABBIX_PROXY_SQLITE3_PORT}:10051" - restart: "${RESTART_POLICY}" volumes: - - /etc/localtime:/etc/localtime:ro - /etc/timezone:/etc/timezone:ro - - ${DATA_DIRECTORY}/usr/lib/zabbix/externalscripts:/usr/lib/zabbix/externalscripts:ro - - ${DATA_DIRECTORY}/var/lib/zabbix/modules:/var/lib/zabbix/modules:ro - - ${DATA_DIRECTORY}/var/lib/zabbix/enc:/var/lib/zabbix/enc:ro - - ${DATA_DIRECTORY}/var/lib/zabbix/ssh_keys:/var/lib/zabbix/ssh_keys:ro - - ${DATA_DIRECTORY}/var/lib/zabbix/mibs:/var/lib/zabbix/mibs:ro - - snmptraps:/var/lib/zabbix/snmptraps:rw - ulimits: - nproc: 65535 - nofile: - soft: 20000 - hard: 40000 - deploy: - resources: - limits: - cpus: '0.70' - memory: 512M - reservations: - cpus: '0.3' - memory: 256M - env_file: - - ${ENV_VARS_DIRECTORY}/.env_prx - - ${ENV_VARS_DIRECTORY}/.env_prx_sqlite3 depends_on: - - zabbix-java-gateway - - zabbix-snmptraps - zabbix-build-sqlite3 - networks: - zbx_net_backend: - aliases: - - zabbix-proxy-sqlite3 - zbx_net_frontend: - stop_grace_period: 30s labels: - com.zabbix.description: "Zabbix proxy with SQLite3 database support" - com.zabbix.company: "Zabbix LLC" - com.zabbix.component: "zabbix-proxy" - com.zabbix.dbtype: "sqlite3" com.zabbix.os: "${ALPINE_OS_TAG}" zabbix-proxy-mysql: + extends: + file: compose_zabbix_components.yaml + service: zabbix-proxy-mysql build: context: ./Dockerfiles/proxy-mysql/${ALPINE_OS_TAG_SHORT} cache_from: @@ -168,66 +79,18 @@ services: args: BUILD_BASE_IMAGE: ${BUILD_BASE_MYSQL_IMAGE}:${ZABBIX_ALPINE_IMAGE_TAG}${ZABBIX_LOCAL_IMAGE_TAG_POSTFIX} image: zabbix-proxy-mysql:${ZABBIX_ALPINE_IMAGE_TAG}${ZABBIX_LOCAL_IMAGE_TAG_POSTFIX} - init: true - profiles: - - all - ports: - - "${ZABBIX_PROXY_MYSQL_PORT}:10051" - restart: "${RESTART_POLICY}" volumes: - - /etc/localtime:/etc/localtime:ro - /etc/timezone:/etc/timezone:ro -# - dbsocket:/var/run/mysqld/ - - ${DATA_DIRECTORY}/usr/lib/zabbix/externalscripts:/usr/lib/zabbix/externalscripts:ro - - ${DATA_DIRECTORY}/var/lib/zabbix/modules:/var/lib/zabbix/modules:ro - - ${DATA_DIRECTORY}/var/lib/zabbix/enc:/var/lib/zabbix/enc:ro - - ${DATA_DIRECTORY}/var/lib/zabbix/ssh_keys:/var/lib/zabbix/ssh_keys:ro - - ${DATA_DIRECTORY}/var/lib/zabbix/mibs:/var/lib/zabbix/mibs:ro - - snmptraps:/var/lib/zabbix/snmptraps:rw - ulimits: - nproc: 65535 - nofile: - soft: 20000 - hard: 40000 - deploy: - resources: - limits: - cpus: '0.70' - memory: 512M - reservations: - cpus: '0.3' - memory: 256M - env_file: - - ${ENV_VARS_DIRECTORY}/.env_db_mysql_proxy - - ${ENV_VARS_DIRECTORY}/.env_prx - - ${ENV_VARS_DIRECTORY}/.env_prx_mysql depends_on: - mysql-server - - zabbix-java-gateway - - zabbix-snmptraps - zabbix-build-mysql - secrets: - - MYSQL_USER - - MYSQL_PASSWORD - - MYSQL_ROOT_USER - - MYSQL_ROOT_PASSWORD -# - client-key.pem -# - client-cert.pem -# - root-ca.pem - networks: - zbx_net_backend: - aliases: - - zabbix-proxy-mysql - zbx_net_frontend: - stop_grace_period: 30s labels: - com.zabbix.description: "Zabbix proxy with MySQL database support" - com.zabbix.company: "Zabbix LLC" - com.zabbix.component: "zabbix-proxy" - com.zabbix.dbtype: "mysql" com.zabbix.os: "${ALPINE_OS_TAG}" zabbix-web-apache-mysql: + extends: + file: compose_zabbix_components.yaml + service: zabbix-web-apache-mysql build: context: ./Dockerfiles/web-apache-mysql/${ALPINE_OS_TAG_SHORT} cache_from: @@ -235,62 +98,18 @@ services: args: BUILD_BASE_IMAGE: ${BUILD_BASE_MYSQL_IMAGE}:${ZABBIX_ALPINE_IMAGE_TAG}${ZABBIX_LOCAL_IMAGE_TAG_POSTFIX} image: zabbix-web-apache-mysql:${ZABBIX_ALPINE_IMAGE_TAG}${ZABBIX_LOCAL_IMAGE_TAG_POSTFIX} - profiles: - - all - ports: - - "${ZABBIX_WEB_APACHE_HTTP_PORT}:8080" - - "${ZABBIX_WEB_APACHE_HTTPS_PORT}:8443" - restart: "${RESTART_POLICY}" volumes: - - /etc/localtime:/etc/localtime:ro - /etc/timezone:/etc/timezone:ro -# - dbsocket:/var/run/mysqld/ - - ${DATA_DIRECTORY}/etc/ssl/apache2:/etc/ssl/apache2:ro - - ${DATA_DIRECTORY}/usr/share/zabbix/modules/:/usr/share/zabbix/modules/:ro - deploy: - resources: - limits: - cpus: '0.70' - memory: 512M - reservations: - cpus: '0.5' - memory: 256M - env_file: - - ${ENV_VARS_DIRECTORY}/.env_db_mysql - - ${ENV_VARS_DIRECTORY}/.env_web - secrets: - - MYSQL_USER - - MYSQL_PASSWORD -# - client-key.pem -# - client-cert.pem -# - root-ca.pem depends_on: - mysql-server - - zabbix-server - zabbix-build-mysql - healthcheck: - test: ["CMD", "curl", "-f", "http://localhost:8080/"] - interval: 10s - timeout: 5s - retries: 3 - start_period: 30s - networks: - zbx_net_backend: - aliases: - - zabbix-web-apache-mysql - zbx_net_frontend: - stop_grace_period: 10s - sysctls: - - net.core.somaxconn=65535 labels: - com.zabbix.description: "Zabbix frontend on Apache web-server with MySQL database support" - com.zabbix.company: "Zabbix LLC" - com.zabbix.component: "zabbix-frontend" - com.zabbix.webserver: "apache2" - com.zabbix.dbtype: "mysql" com.zabbix.os: "${ALPINE_OS_TAG}" zabbix-web-nginx-mysql: + extends: + file: compose_zabbix_components.yaml + service: zabbix-web-nginx-mysql build: context: ./Dockerfiles/web-nginx-mysql/${ALPINE_OS_TAG_SHORT} cache_from: @@ -298,60 +117,18 @@ services: args: BUILD_BASE_IMAGE: ${BUILD_BASE_MYSQL_IMAGE}:${ZABBIX_ALPINE_IMAGE_TAG}${ZABBIX_LOCAL_IMAGE_TAG_POSTFIX} image: zabbix-web-nginx-mysql:${ZABBIX_ALPINE_IMAGE_TAG}${ZABBIX_LOCAL_IMAGE_TAG_POSTFIX} - ports: - - "${ZABBIX_WEB_NGINX_HTTP_PORT}:8080" - - "${ZABBIX_WEB_NGINX_HTTPS_PORT}:8443" - restart: "${RESTART_POLICY}" volumes: - - /etc/localtime:/etc/localtime:ro - /etc/timezone:/etc/timezone:ro -# - dbsocket:/var/run/mysqld/ - - ${DATA_DIRECTORY}/etc/ssl/nginx:/etc/ssl/nginx:ro - - ${DATA_DIRECTORY}/usr/share/zabbix/modules/:/usr/share/zabbix/modules/:ro - deploy: - resources: - limits: - cpus: '0.70' - memory: 512M - reservations: - cpus: '0.5' - memory: 256M - env_file: - - ${ENV_VARS_DIRECTORY}/.env_db_mysql - - ${ENV_VARS_DIRECTORY}/.env_web - secrets: - - MYSQL_USER - - MYSQL_PASSWORD -# - client-key.pem -# - client-cert.pem -# - root-ca.pem depends_on: - mysql-server - - zabbix-server - zabbix-build-mysql - healthcheck: - test: ["CMD", "curl", "-f", "http://localhost:8080/ping"] - interval: 10s - timeout: 5s - retries: 3 - start_period: 30s - networks: - zbx_net_backend: - aliases: - - zabbix-web-nginx-mysql - zbx_net_frontend: - stop_grace_period: 10s - sysctls: - - net.core.somaxconn=65535 labels: - com.zabbix.description: "Zabbix frontend on Nginx web-server with MySQL database support" - com.zabbix.company: "Zabbix LLC" - com.zabbix.component: "zabbix-frontend" - com.zabbix.webserver: "nginx" - com.zabbix.dbtype: "mysql" com.zabbix.os: "${ALPINE_OS_TAG}" zabbix-agent: + extends: + file: compose_zabbix_components.yaml + service: zabbix-agent build: context: ./Dockerfiles/agent/${ALPINE_OS_TAG_SHORT} cache_from: @@ -359,48 +136,17 @@ services: args: BUILD_BASE_IMAGE: ${BUILD_BASE_MYSQL_IMAGE}:${ZABBIX_ALPINE_IMAGE_TAG}${ZABBIX_LOCAL_IMAGE_TAG_POSTFIX} image: zabbix-agent:${ZABBIX_ALPINE_IMAGE_TAG}${ZABBIX_LOCAL_IMAGE_TAG_POSTFIX} - init: true - profiles: - - full - - all - ports: - - "${ZABBIX_AGENT_PORT}:10050" - restart: "${RESTART_POLICY}" volumes: - - /etc/localtime:/etc/localtime:ro - /etc/timezone:/etc/timezone:ro - - ${DATA_DIRECTORY}/etc/zabbix/zabbix_agentd.d:/etc/zabbix/zabbix_agentd.d:ro - - ${DATA_DIRECTORY}/var/lib/zabbix/modules:/var/lib/zabbix/modules:ro - - ${DATA_DIRECTORY}/var/lib/zabbix/enc:/var/lib/zabbix/enc:ro - - ${DATA_DIRECTORY}/var/lib/zabbix/ssh_keys:/var/lib/zabbix/ssh_keys:ro - deploy: - resources: - limits: - cpus: '0.2' - memory: 128M - reservations: - cpus: '0.1' - memory: 64M - mode: global - env_file: - - ${ENV_VARS_DIRECTORY}/.env_agent - privileged: true - pid: "host" depends_on: - zabbix-build-mysql - networks: - zbx_net_backend: - aliases: - - zabbix-agent - - zabbix-agent-passive - stop_grace_period: 5s labels: - com.zabbix.description: "Zabbix agent" - com.zabbix.company: "Zabbix LLC" - com.zabbix.component: "zabbix-agentd" com.zabbix.os: "${ALPINE_OS_TAG}" zabbix-java-gateway: + extends: + file: compose_zabbix_components.yaml + service: zabbix-java-gateway build: context: ./Dockerfiles/java-gateway/${ALPINE_OS_TAG_SHORT} cache_from: @@ -408,124 +154,39 @@ services: args: BUILD_BASE_IMAGE: ${BUILD_BASE_MYSQL_IMAGE}:${ZABBIX_ALPINE_IMAGE_TAG}${ZABBIX_LOCAL_IMAGE_TAG_POSTFIX} image: zabbix-java-gateway:${ZABBIX_ALPINE_IMAGE_TAG}${ZABBIX_LOCAL_IMAGE_TAG_POSTFIX} - profiles: - - full - - all - ports: - - "${ZABBIX_JAVA_GATEWAY_PORT}:10052" - restart: "${RESTART_POLICY}" - deploy: - resources: - limits: - cpus: '0.5' - memory: 512M - reservations: - cpus: '0.25' - memory: 256M - env_file: - - ${ENV_VARS_DIRECTORY}/.env_java depends_on: - zabbix-build-mysql - networks: - zbx_net_backend: - aliases: - - zabbix-java-gateway - stop_grace_period: 5s labels: - com.zabbix.description: "Zabbix Java Gateway" - com.zabbix.company: "Zabbix LLC" - com.zabbix.component: "java-gateway" com.zabbix.os: "${ALPINE_OS_TAG}" zabbix-snmptraps: + extends: + file: compose_zabbix_components.yaml + service: zabbix-snmptraps build: context: ./Dockerfiles/snmptraps/${ALPINE_OS_TAG_SHORT} cache_from: - "${ALPINE_CACHE_FROM}" image: zabbix-snmptraps:${ZABBIX_ALPINE_IMAGE_TAG}${ZABBIX_LOCAL_IMAGE_TAG_POSTFIX} -# Override snmptrapd command arguments to receive SNMP traps by DNS -# It must be done with ZBX_SNMP_TRAP_USE_DNS=true environment variable -# command: /usr/sbin/snmptrapd -C -c /etc/snmp/snmptrapd.conf -Lo -A - profiles: - - full - - all - ports: - - "${ZABBIX_SNMPTRAPS_PORT}:1162/udp" - restart: "${RESTART_POLICY}" - volumes: - - snmptraps:/var/lib/zabbix/snmptraps:rw - deploy: - resources: - limits: - cpus: '0.5' - memory: 256M - reservations: - cpus: '0.25' - memory: 128M - env_file: - - ${ENV_VARS_DIRECTORY}/.env_snmptraps - networks: - zbx_net_frontend: - aliases: - - zabbix-snmptraps - zbx_net_backend: - stop_grace_period: 5s + depends_on: + - zabbix-build-mysql labels: - com.zabbix.description: "Zabbix snmptraps" - com.zabbix.company: "Zabbix LLC" - com.zabbix.component: "snmptraps" com.zabbix.os: "${ALPINE_OS_TAG}" mysql-server: - image: "${MYSQL_IMAGE}:${MYSQL_IMAGE_TAG}" - command: - - mysqld - - --character-set-server=utf8 - - --collation-server=utf8_bin - - --default-authentication-plugin=mysql_native_password -# - --require-secure-transport -# - --ssl-ca=/run/secrets/root-ca.pem -# - --ssl-cert=/run/secrets/server-cert.pem -# - --ssl-key=/run/secrets/server-key.pem - restart: "${RESTART_POLICY}" - volumes: - - ${DATA_DIRECTORY}/var/lib/mysql:/var/lib/mysql:rw -# - dbsocket:/var/run/mysqld/ - env_file: - - ${ENV_VARS_DIRECTORY}/.env_db_mysql - secrets: - - MYSQL_USER - - MYSQL_PASSWORD - - MYSQL_ROOT_PASSWORD -# - server-key.pem -# - server-cert.pem -# - root-ca.pem - stop_grace_period: 1m - networks: - zbx_net_backend: - aliases: - - mysql-server - - zabbix-database - - mysql-database + extends: + file: compose_databases.yaml + service: mysql-server - db_data_mysql: - image: busybox - volumes: - - ${DATA_DIRECTORY}/var/lib/mysql:/var/lib/mysql:rw + db-data-mysql: + extends: + file: compose_databases.yaml + service: db-data-mysql # elasticsearch: -# image: "${ELASTICSEARCH_IMAGE}:${ELASTICSEARCH_IMAGE_TAG}" -# restart: "${RESTART_POLICY}" -# profiles: -# - full -# - all -# environment: -# - transport.host=0.0.0.0 -# - discovery.zen.minimum_master_nodes=1 -# networks: -# zbx_net_backend: -# aliases: -# - elasticsearch +# extends: +# file: compose_databases.yaml +# service: elasticsearch networks: zbx_net_frontend: @@ -545,6 +206,13 @@ networks: driver: "${BACKEND_NETWORK_DRIVER}" config: - subnet: "${BACKEND_SUBNET}" + zbx_net_database: + driver: bridge + driver_opts: + com.docker.network.enable_ipv6: "${DATABASE_NETWORK_ENABLE_IPV6}" + internal: true + ipam: + driver: "${DATABASE_NETWORK_DRIVER}" volumes: snmptraps: diff --git a/docker-compose_v3_alpine_pgsql_latest.yaml b/docker-compose_v3_alpine_pgsql_latest.yaml index 104a6529e..5ec701331 100644 --- a/docker-compose_v3_alpine_pgsql_latest.yaml +++ b/docker-compose_v3_alpine_pgsql_latest.yaml @@ -1,459 +1,113 @@ version: '3.8' services: zabbix-server: + extends: + file: compose_zabbix_components.yaml + service: zabbix-server-pgsql image: "${ZABBIX_SERVER_PGSQL_IMAGE}:${ZABBIX_ALPINE_IMAGE_TAG}${ZABBIX_IMAGE_TAG_POSTFIX}" - init: true - ports: - - "${ZABBIX_SERVER_PORT}:10051" - restart: "${RESTART_POLICY}" volumes: - - /etc/localtime:/etc/localtime:ro - /etc/timezone:/etc/timezone:ro - - ${DATA_DIRECTORY}/usr/lib/zabbix/alertscripts:/usr/lib/zabbix/alertscripts:ro - - ${DATA_DIRECTORY}/usr/lib/zabbix/externalscripts:/usr/lib/zabbix/externalscripts:ro - - ${DATA_DIRECTORY}/var/lib/zabbix/dbscripts:/var/lib/zabbix/dbscripts:ro - - ${DATA_DIRECTORY}/var/lib/zabbix/export:/var/lib/zabbix/export:rw - - ${DATA_DIRECTORY}/var/lib/zabbix/modules:/var/lib/zabbix/modules:ro - - ${DATA_DIRECTORY}/var/lib/zabbix/enc:/var/lib/zabbix/enc:ro - - ${DATA_DIRECTORY}/var/lib/zabbix/ssh_keys:/var/lib/zabbix/ssh_keys:ro - - ${DATA_DIRECTORY}/var/lib/zabbix/mibs:/var/lib/zabbix/mibs:ro - - snmptraps:/var/lib/zabbix/snmptraps:rw -# - ${ENV_VARS_DIRECTORY}/.ZBX_DB_CA_FILE:/run/secrets/root-ca.pem:ro -# - ${ENV_VARS_DIRECTORY}/.ZBX_DB_CERT_FILE:/run/secrets/client-cert.pem:ro -# - ${ENV_VARS_DIRECTORY}/.ZBX_DB_KEY_FILE:/run/secrets/client-key.pem:ro - 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_VARS_DIRECTORY}/.env_db_pgsql - - ${ENV_VARS_DIRECTORY}/.env_srv - secrets: - - POSTGRES_USER - - POSTGRES_PASSWORD depends_on: - postgres-server - networks: - zbx_net_backend: - aliases: - - zabbix-server - - zabbix-server-pgsql - zbx_net_frontend: -# devices: -# - "/dev/ttyUSB0:/dev/ttyUSB0" - stop_grace_period: 30s - sysctls: - - net.ipv4.ip_local_port_range=1024 64999 - - 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: "${ALPINE_OS_TAG}" zabbix-proxy-sqlite3: + extends: + file: compose_zabbix_components.yaml + service: zabbix-proxy-sqlite3 image: "${ZABBIX_PROXY_SQLITE3_IMAGE}:${ZABBIX_ALPINE_IMAGE_TAG}${ZABBIX_IMAGE_TAG_POSTFIX}" - init: true - profiles: - - all - ports: - - "${ZABBIX_PROXY_SQLITE3_PORT}:10051" - restart: "${RESTART_POLICY}" volumes: - - /etc/localtime:/etc/localtime:ro - /etc/timezone:/etc/timezone:ro - - ${DATA_DIRECTORY}/usr/lib/zabbix/externalscripts:/usr/lib/zabbix/externalscripts:ro - - ${DATA_DIRECTORY}/var/lib/zabbix/modules:/var/lib/zabbix/modules:ro - - ${DATA_DIRECTORY}/var/lib/zabbix/enc:/var/lib/zabbix/enc:ro - - ${DATA_DIRECTORY}/var/lib/zabbix/ssh_keys:/var/lib/zabbix/ssh_keys:ro - - ${DATA_DIRECTORY}/var/lib/zabbix/mibs:/var/lib/zabbix/mibs:ro - - snmptraps:/var/lib/zabbix/snmptraps:rw - ulimits: - nproc: 65535 - nofile: - soft: 20000 - hard: 40000 - deploy: - resources: - limits: - cpus: '0.70' - memory: 512M - reservations: - cpus: '0.3' - memory: 256M - env_file: - - ${ENV_VARS_DIRECTORY}/.env_prx - - ${ENV_VARS_DIRECTORY}/.env_prx_sqlite3 - depends_on: - - zabbix-java-gateway - - zabbix-snmptraps - networks: - zbx_net_backend: - aliases: - - zabbix-proxy-sqlite3 - zbx_net_frontend: - stop_grace_period: 30s labels: - com.zabbix.description: "Zabbix proxy with SQLite3 database support" - com.zabbix.company: "Zabbix LLC" - com.zabbix.component: "zabbix-proxy" - com.zabbix.dbtype: "sqlite3" com.zabbix.os: "${ALPINE_OS_TAG}" zabbix-proxy-mysql: + extends: + file: compose_zabbix_components.yaml + service: zabbix-proxy-mysql image: "${ZABBIX_PROXY_MYSQL_IMAGE}:${ZABBIX_ALPINE_IMAGE_TAG}${ZABBIX_IMAGE_TAG_POSTFIX}" - init: true - profiles: - - all - ports: - - "${ZABBIX_PROXY_MYSQL_PORT}:10051" - restart: "${RESTART_POLICY}" volumes: - - /etc/localtime:/etc/localtime:ro - /etc/timezone:/etc/timezone:ro - - ${DATA_DIRECTORY}/usr/lib/zabbix/externalscripts:/usr/lib/zabbix/externalscripts:ro - - ${DATA_DIRECTORY}/var/lib/zabbix/modules:/var/lib/zabbix/modules:ro - - ${DATA_DIRECTORY}/var/lib/zabbix/enc:/var/lib/zabbix/enc:ro - - ${DATA_DIRECTORY}/var/lib/zabbix/ssh_keys:/var/lib/zabbix/ssh_keys:ro - - ${DATA_DIRECTORY}/var/lib/zabbix/mibs:/var/lib/zabbix/mibs:ro - - snmptraps:/var/lib/zabbix/snmptraps:rw - ulimits: - nproc: 65535 - nofile: - soft: 20000 - hard: 40000 - deploy: - resources: - limits: - cpus: '0.70' - memory: 512M - reservations: - cpus: '0.3' - memory: 256M - env_file: - - ${ENV_VARS_DIRECTORY}/.env_db_mysql_proxy - - ${ENV_VARS_DIRECTORY}/.env_prx - - ${ENV_VARS_DIRECTORY}/.env_prx_mysql - secrets: - - MYSQL_USER - - MYSQL_PASSWORD - - MYSQL_ROOT_USER - - MYSQL_ROOT_PASSWORD depends_on: - mysql-server - - zabbix-java-gateway - - zabbix-snmptraps - networks: - zbx_net_backend: - aliases: - - zabbix-proxy-mysql - zbx_net_frontend: - stop_grace_period: 30s labels: - com.zabbix.description: "Zabbix proxy with MySQL database support" - com.zabbix.company: "Zabbix LLC" - com.zabbix.component: "zabbix-proxy" - com.zabbix.dbtype: "mysql" com.zabbix.os: "${ALPINE_OS_TAG}" zabbix-web-apache-pgsql: + extends: + file: compose_zabbix_components.yaml + service: zabbix-web-apache-pgsql image: "${ZABBIX_WEB_APACHE_PGSQL_IMAGE}:${ZABBIX_ALPINE_IMAGE_TAG}${ZABBIX_IMAGE_TAG_POSTFIX}" - profiles: - - all - ports: - - "${ZABBIX_WEB_APACHE_HTTP_PORT}:8080" - - "${ZABBIX_WEB_APACHE_HTTPS_PORT}:8443" - restart: "${RESTART_POLICY}" volumes: - - /etc/localtime:/etc/localtime:ro - /etc/timezone:/etc/timezone:ro - - ${DATA_DIRECTORY}/etc/ssl/apache2:/etc/ssl/apache2:ro - - ${DATA_DIRECTORY}/usr/share/zabbix/modules/:/usr/share/zabbix/modules/:ro -# - ${ENV_VARS_DIRECTORY}/.ZBX_DB_CA_FILE:/run/secrets/root-ca.pem:ro -# - ${ENV_VARS_DIRECTORY}/.ZBX_DB_CERT_FILE:/run/secrets/client-cert.pem:ro -# - ${ENV_VARS_DIRECTORY}/.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_VARS_DIRECTORY}/.env_db_pgsql - - ${ENV_VARS_DIRECTORY}/.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-apache-pgsql - zbx_net_frontend: - stop_grace_period: 10s - sysctls: - - net.core.somaxconn=65535 labels: - com.zabbix.description: "Zabbix frontend on Apache web-server with PostgreSQL database support" - com.zabbix.company: "Zabbix LLC" - com.zabbix.component: "zabbix-frontend" - com.zabbix.webserver: "apache2" - com.zabbix.dbtype: "pgsql" com.zabbix.os: "${ALPINE_OS_TAG}" zabbix-web-nginx-pgsql: + extends: + file: compose_zabbix_components.yaml + service: zabbix-web-nginx-pgsql image: "${ZABBIX_WEB_NGINX_PGSQL_IMAGE}:${ZABBIX_ALPINE_IMAGE_TAG}${ZABBIX_IMAGE_TAG_POSTFIX}" - ports: - - "${ZABBIX_WEB_NGINX_HTTP_PORT}:8080" - - "${ZABBIX_WEB_NGINX_HTTPS_PORT}:8443" - restart: "${RESTART_POLICY}" volumes: - - /etc/localtime:/etc/localtime:ro - /etc/timezone:/etc/timezone:ro - - ${DATA_DIRECTORY}/etc/ssl/nginx:/etc/ssl/nginx:ro - - ${DATA_DIRECTORY}/usr/share/zabbix/modules/:/usr/share/zabbix/modules/:ro -# - ${ENV_VARS_DIRECTORY}/.ZBX_DB_CA_FILE:/run/secrets/root-ca.pem:ro -# - ${ENV_VARS_DIRECTORY}/.ZBX_DB_CERT_FILE:/run/secrets/client-cert.pem:ro -# - ${ENV_VARS_DIRECTORY}/.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_VARS_DIRECTORY}/.env_db_pgsql - - ${ENV_VARS_DIRECTORY}/.env_web - secrets: - - POSTGRES_USER - - POSTGRES_PASSWORD depends_on: - postgres-server - - zabbix-server - healthcheck: - test: ["CMD", "curl", "-f", "http://localhost:8080/ping"] - interval: 10s - timeout: 5s - retries: 3 - start_period: 30s - networks: - zbx_net_backend: - aliases: - - zabbix-web-nginx-pgsql - 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: "${ALPINE_OS_TAG}" zabbix-agent: + extends: + file: compose_zabbix_components.yaml + service: zabbix-agent image: "${ZABBIX_AGENT_IMAGE}:${ZABBIX_ALPINE_IMAGE_TAG}${ZABBIX_IMAGE_TAG_POSTFIX}" - init: true - profiles: - - full - - all - ports: - - "${ZABBIX_AGENT_PORT}:10050" - restart: "${RESTART_POLICY}" volumes: - - /etc/localtime:/etc/localtime:ro - /etc/timezone:/etc/timezone:ro - - ${DATA_DIRECTORY}/etc/zabbix/zabbix_agentd.d:/etc/zabbix/zabbix_agentd.d:ro - - ${DATA_DIRECTORY}/var/lib/zabbix/modules:/var/lib/zabbix/modules:ro - - ${DATA_DIRECTORY}/var/lib/zabbix/enc:/var/lib/zabbix/enc:ro - - ${DATA_DIRECTORY}/var/lib/zabbix/ssh_keys:/var/lib/zabbix/ssh_keys:ro - deploy: - resources: - limits: - cpus: '0.2' - memory: 128M - reservations: - cpus: '0.1' - memory: 64M - mode: global - env_file: - - ${ENV_VARS_DIRECTORY}/.env_agent - privileged: true - pid: "host" - networks: - zbx_net_backend: - aliases: - - zabbix-agent - - zabbix-agent-passive - stop_grace_period: 5s labels: - com.zabbix.description: "Zabbix agent" - com.zabbix.company: "Zabbix LLC" - com.zabbix.component: "zabbix-agentd" com.zabbix.os: "${ALPINE_OS_TAG}" zabbix-java-gateway: + extends: + file: compose_zabbix_components.yaml + service: zabbix-java-gateway image: "${ZABBIX_JAVA_GATEWAY_IMAGE}:${ZABBIX_ALPINE_IMAGE_TAG}${ZABBIX_IMAGE_TAG_POSTFIX}" - profiles: - - full - - all - ports: - - "${ZABBIX_JAVA_GATEWAY_PORT}:10052" - restart: "${RESTART_POLICY}" - deploy: - resources: - limits: - cpus: '0.5' - memory: 512M - reservations: - cpus: '0.25' - memory: 256M - env_file: - - ${ENV_VARS_DIRECTORY}/.env_java - networks: - zbx_net_backend: - aliases: - - zabbix-java-gateway - stop_grace_period: 5s labels: - com.zabbix.description: "Zabbix Java Gateway" - com.zabbix.company: "Zabbix LLC" - com.zabbix.component: "java-gateway" com.zabbix.os: "${ALPINE_OS_TAG}" zabbix-snmptraps: + extends: + file: compose_zabbix_components.yaml + service: zabbix-snmptraps image: "${ZABBIX_SNMPTRAPS_IMAGE}:${ZABBIX_ALPINE_IMAGE_TAG}${ZABBIX_IMAGE_TAG_POSTFIX}" -# Override snmptrapd command arguments to receive SNMP traps by DNS -# It must be done with ZBX_SNMP_TRAP_USE_DNS=true environment variable -# command: /usr/sbin/snmptrapd -C -c /etc/snmp/snmptrapd.conf -Lo -A - profiles: - - full - - all - ports: - - "${ZABBIX_SNMPTRAPS_PORT}:1162/udp" - restart: "${RESTART_POLICY}" - volumes: - - snmptraps:/var/lib/zabbix/snmptraps:rw - deploy: - resources: - limits: - cpus: '0.5' - memory: 256M - reservations: - cpus: '0.25' - memory: 128M - env_file: - - ${ENV_VARS_DIRECTORY}/.env_snmptraps - networks: - zbx_net_frontend: - aliases: - - zabbix-snmptraps - zbx_net_backend: - stop_grace_period: 5s labels: - com.zabbix.description: "Zabbix snmptraps" - com.zabbix.company: "Zabbix LLC" - com.zabbix.component: "snmptraps" com.zabbix.os: "${ALPINE_OS_TAG}" mysql-server: - image: "${MYSQL_IMAGE}:${MYSQL_IMAGE_TAG}" - profiles: - - all - command: - - mysqld - - --character-set-server=utf8 - - --collation-server=utf8_bin - - --default-authentication-plugin=mysql_native_password - restart: "${RESTART_POLICY}" - volumes: - - ${DATA_DIRECTORY}/var/lib/mysql:/var/lib/mysql:rw - env_file: - - ${ENV_VARS_DIRECTORY}/.env_db_mysql - secrets: - - MYSQL_USER - - MYSQL_PASSWORD - - MYSQL_ROOT_PASSWORD - stop_grace_period: 1m - networks: - zbx_net_backend: - aliases: - - mysql-server - - zabbix-database - - mysql-database + extends: + file: compose_databases.yaml + service: mysql-server postgres-server: - image: "${POSTGRESQL_IMAGE}:${POSTGRESQL_IMAGE_TAG}" -# 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 - restart: "${RESTART_POLICY}" - volumes: - - ${DATA_DIRECTORY}/var/lib/postgresql/data:/var/lib/postgresql/data:rw - - ${ENV_VARS_DIRECTORY}/.ZBX_DB_CA_FILE:/run/secrets/root-ca.pem:ro - - ${ENV_VARS_DIRECTORY}/.ZBX_DB_CERT_FILE:/run/secrets/server-cert.pem:ro - - ${ENV_VARS_DIRECTORY}/.ZBX_DB_KEY_FILE:/run/secrets/server-key.pem:ro - env_file: - - ${ENV_VARS_DIRECTORY}/.env_db_pgsql - secrets: - - POSTGRES_USER - - POSTGRES_PASSWORD - stop_grace_period: 1m - networks: - zbx_net_backend: - aliases: - - postgres-server - - pgsql-server - - pgsql-database + extends: + file: compose_databases.yaml + service: postgres-server - db_data_mysql: - image: busybox - profiles: - - all - volumes: - - ${DATA_DIRECTORY}/var/lib/mysql:/var/lib/mysql:rw + db-data-mysql: + extends: + file: compose_databases.yaml + service: db-data-mysql - db_data_pgsql: - image: busybox - volumes: - - ${DATA_DIRECTORY}/var/lib/postgresql/data:/var/lib/postgresql/data:rw + db-data-pgsql: + extends: + file: compose_databases.yaml + service: db-data-pgsql # elasticsearch: -# image: "${ELASTICSEARCH_IMAGE}:${ELASTICSEARCH_IMAGE_TAG}" -# restart: "${RESTART_POLICY}" -# profiles: -# - full -# - all -# environment: -# - transport.host=0.0.0.0 -# - discovery.zen.minimum_master_nodes=1 -# networks: -# zbx_net_backend: -# aliases: -# - elasticsearch +# extends: +# file: compose_databases.yaml +# service: elasticsearch networks: zbx_net_frontend: @@ -473,9 +127,17 @@ networks: driver: "${BACKEND_NETWORK_DRIVER}" config: - subnet: "${BACKEND_SUBNET}" + zbx_net_database: + driver: bridge + driver_opts: + com.docker.network.enable_ipv6: "${DATABASE_NETWORK_ENABLE_IPV6}" + internal: true + ipam: + driver: "${DATABASE_NETWORK_DRIVER}" volumes: snmptraps: +# dbsocket: secrets: MYSQL_USER: diff --git a/docker-compose_v3_alpine_pgsql_local.yaml b/docker-compose_v3_alpine_pgsql_local.yaml index dd8e5bc07..8af62a2a1 100644 --- a/docker-compose_v3_alpine_pgsql_local.yaml +++ b/docker-compose_v3_alpine_pgsql_local.yaml @@ -45,6 +45,9 @@ services: - zabbix-build-base zabbix-server: + extends: + file: compose_zabbix_components.yaml + service: zabbix-server-pgsql build: context: ./Dockerfiles/server-pgsql/${ALPINE_OS_TAG_SHORT} cache_from: @@ -52,69 +55,18 @@ services: args: BUILD_BASE_IMAGE: ${BUILD_BASE_PGSQL_IMAGE}:${ZABBIX_ALPINE_IMAGE_TAG}${ZABBIX_LOCAL_IMAGE_TAG_POSTFIX} image: zabbix-server-pgsql:${ZABBIX_ALPINE_IMAGE_TAG}${ZABBIX_LOCAL_IMAGE_TAG_POSTFIX} - init: true - ports: - - "${ZABBIX_SERVER_PORT}:10051" - restart: "${RESTART_POLICY}" volumes: - - /etc/localtime:/etc/localtime:ro - /etc/timezone:/etc/timezone:ro - - ${DATA_DIRECTORY}/usr/lib/zabbix/alertscripts:/usr/lib/zabbix/alertscripts:ro - - ${DATA_DIRECTORY}/usr/lib/zabbix/externalscripts:/usr/lib/zabbix/externalscripts:ro - - ${DATA_DIRECTORY}/var/lib/zabbix/dbscripts:/var/lib/zabbix/dbscripts:ro - - ${DATA_DIRECTORY}/var/lib/zabbix/export:/var/lib/zabbix/export:rw - - ${DATA_DIRECTORY}/var/lib/zabbix/modules:/var/lib/zabbix/modules:ro - - ${DATA_DIRECTORY}/var/lib/zabbix/enc:/var/lib/zabbix/enc:ro - - ${DATA_DIRECTORY}/var/lib/zabbix/ssh_keys:/var/lib/zabbix/ssh_keys:ro - - ${DATA_DIRECTORY}/var/lib/zabbix/mibs:/var/lib/zabbix/mibs:ro - - snmptraps:/var/lib/zabbix/snmptraps:rw -# - ${ENV_VARS_DIRECTORY}/.ZBX_DB_CA_FILE:/run/secrets/root-ca.pem:ro -# - ${ENV_VARS_DIRECTORY}/.ZBX_DB_CERT_FILE:/run/secrets/client-cert.pem:ro -# - ${ENV_VARS_DIRECTORY}/.ZBX_DB_KEY_FILE:/run/secrets/client-key.pem:ro - 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_VARS_DIRECTORY}/.env_db_pgsql - - ${ENV_VARS_DIRECTORY}/.env_srv - secrets: - - POSTGRES_USER - - POSTGRES_PASSWORD depends_on: - postgres-server - zabbix-build-pgsql - networks: - zbx_net_backend: - aliases: - - zabbix-server - - zabbix-server-pgsql - zbx_net_frontend: -# devices: -# - "/dev/ttyUSB0:/dev/ttyUSB0" - stop_grace_period: 30s - sysctls: - - net.ipv4.ip_local_port_range=1024 64999 - - 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: "${ALPINE_OS_TAG}" zabbix-proxy-sqlite3: + extends: + file: compose_zabbix_components.yaml + service: zabbix-proxy-sqlite3 build: context: ./Dockerfiles/proxy-sqlite3/${ALPINE_OS_TAG_SHORT} cache_from: @@ -122,55 +74,17 @@ services: args: BUILD_BASE_IMAGE: ${BUILD_BASE_SQLITE3_IMAGE}:${ZABBIX_ALPINE_IMAGE_TAG}${ZABBIX_LOCAL_IMAGE_TAG_POSTFIX} image: zabbix-proxy-sqlite3:${ZABBIX_ALPINE_IMAGE_TAG}${ZABBIX_LOCAL_IMAGE_TAG_POSTFIX} - init: true - profiles: - - all - ports: - - "${ZABBIX_PROXY_SQLITE3_PORT}:10051" - restart: "${RESTART_POLICY}" volumes: - - /etc/localtime:/etc/localtime:ro - /etc/timezone:/etc/timezone:ro - - ${DATA_DIRECTORY}/usr/lib/zabbix/externalscripts:/usr/lib/zabbix/externalscripts:ro - - ${DATA_DIRECTORY}/var/lib/zabbix/modules:/var/lib/zabbix/modules:ro - - ${DATA_DIRECTORY}/var/lib/zabbix/enc:/var/lib/zabbix/enc:ro - - ${DATA_DIRECTORY}/var/lib/zabbix/ssh_keys:/var/lib/zabbix/ssh_keys:ro - - ${DATA_DIRECTORY}/var/lib/zabbix/mibs:/var/lib/zabbix/mibs:ro - - snmptraps:/var/lib/zabbix/snmptraps:rw - ulimits: - nproc: 65535 - nofile: - soft: 20000 - hard: 40000 - deploy: - resources: - limits: - cpus: '0.70' - memory: 512M - reservations: - cpus: '0.3' - memory: 256M - env_file: - - ${ENV_VARS_DIRECTORY}/.env_prx - - ${ENV_VARS_DIRECTORY}/.env_prx_sqlite3 depends_on: - - zabbix-java-gateway - - zabbix-snmptraps - zabbix-build-sqlite3 - networks: - zbx_net_backend: - aliases: - - zabbix-proxy-sqlite3 - zbx_net_frontend: - stop_grace_period: 30s labels: - com.zabbix.description: "Zabbix proxy with SQLite3 database support" - com.zabbix.company: "Zabbix LLC" - com.zabbix.component: "zabbix-proxy" - com.zabbix.dbtype: "sqlite3" com.zabbix.os: "${ALPINE_OS_TAG}" zabbix-proxy-mysql: + extends: + file: compose_zabbix_components.yaml + service: zabbix-proxy-mysql build: context: ./Dockerfiles/proxy-mysql/${ALPINE_OS_TAG_SHORT} cache_from: @@ -178,62 +92,18 @@ services: args: BUILD_BASE_IMAGE: ${BUILD_BASE_MYSQL_IMAGE}:${ZABBIX_ALPINE_IMAGE_TAG}${ZABBIX_LOCAL_IMAGE_TAG_POSTFIX} image: zabbix-proxy-mysql:${ZABBIX_ALPINE_IMAGE_TAG}${ZABBIX_LOCAL_IMAGE_TAG_POSTFIX} - init: true - profiles: - - all - ports: - - "${ZABBIX_PROXY_MYSQL_PORT}:10051" - restart: "${RESTART_POLICY}" volumes: - - /etc/localtime:/etc/localtime:ro - /etc/timezone:/etc/timezone:ro - - ${DATA_DIRECTORY}/usr/lib/zabbix/externalscripts:/usr/lib/zabbix/externalscripts:ro - - ${DATA_DIRECTORY}/var/lib/zabbix/modules:/var/lib/zabbix/modules:ro - - ${DATA_DIRECTORY}/var/lib/zabbix/enc:/var/lib/zabbix/enc:ro - - ${DATA_DIRECTORY}/var/lib/zabbix/ssh_keys:/var/lib/zabbix/ssh_keys:ro - - ${DATA_DIRECTORY}/var/lib/zabbix/mibs:/var/lib/zabbix/mibs:ro - - snmptraps:/var/lib/zabbix/snmptraps:rw - ulimits: - nproc: 65535 - nofile: - soft: 20000 - hard: 40000 - deploy: - resources: - limits: - cpus: '0.70' - memory: 512M - reservations: - cpus: '0.3' - memory: 256M - env_file: - - ${ENV_VARS_DIRECTORY}/.env_db_mysql_proxy - - ${ENV_VARS_DIRECTORY}/.env_prx - - ${ENV_VARS_DIRECTORY}/.env_prx_mysql - secrets: - - MYSQL_USER - - MYSQL_PASSWORD - - MYSQL_ROOT_USER - - MYSQL_ROOT_PASSWORD depends_on: - mysql-server - - zabbix-java-gateway - - zabbix-snmptraps - zabbix-build-mysql - networks: - zbx_net_backend: - aliases: - - zabbix-proxy-mysql - zbx_net_frontend: - stop_grace_period: 30s labels: - com.zabbix.description: "Zabbix proxy with MySQL database support" - com.zabbix.company: "Zabbix LLC" - com.zabbix.component: "zabbix-proxy" - com.zabbix.dbtype: "mysql" com.zabbix.os: "${ALPINE_OS_TAG}" zabbix-web-apache-pgsql: + extends: + file: compose_zabbix_components.yaml + service: zabbix-web-apache-pgsql build: context: ./Dockerfiles/web-apache-pgsql/${ALPINE_OS_TAG_SHORT} cache_from: @@ -241,61 +111,18 @@ services: args: BUILD_BASE_IMAGE: ${BUILD_BASE_PGSQL_IMAGE}:${ZABBIX_ALPINE_IMAGE_TAG}${ZABBIX_LOCAL_IMAGE_TAG_POSTFIX} image: zabbix-web-apache-pgsql:${ZABBIX_ALPINE_IMAGE_TAG}${ZABBIX_LOCAL_IMAGE_TAG_POSTFIX} - profiles: - - all - ports: - - "${ZABBIX_WEB_APACHE_HTTP_PORT}:8080" - - "${ZABBIX_WEB_APACHE_HTTPS_PORT}:8443" - restart: "${RESTART_POLICY}" volumes: - - /etc/localtime:/etc/localtime:ro - /etc/timezone:/etc/timezone:ro - - ${DATA_DIRECTORY}/etc/ssl/apache2:/etc/ssl/apache2:ro - - ${DATA_DIRECTORY}/usr/share/zabbix/modules/:/usr/share/zabbix/modules/:ro -# - ${ENV_VARS_DIRECTORY}/.ZBX_DB_CA_FILE:/run/secrets/root-ca.pem:ro -# - ${ENV_VARS_DIRECTORY}/.ZBX_DB_CERT_FILE:/run/secrets/client-cert.pem:ro -# - ${ENV_VARS_DIRECTORY}/.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_VARS_DIRECTORY}/.env_db_pgsql - - ${ENV_VARS_DIRECTORY}/.env_web - secrets: - - POSTGRES_USER - - POSTGRES_PASSWORD depends_on: - postgres-server - - zabbix-server - zabbix-build-pgsql - healthcheck: - test: ["CMD", "curl", "-f", "http://localhost:8080/"] - interval: 10s - timeout: 5s - retries: 3 - start_period: 30s - networks: - zbx_net_backend: - aliases: - - zabbix-web-apache-pgsql - zbx_net_frontend: - stop_grace_period: 10s - sysctls: - - net.core.somaxconn=65535 labels: - com.zabbix.description: "Zabbix frontend on Apache web-server with PostgreSQL database support" - com.zabbix.company: "Zabbix LLC" - com.zabbix.component: "zabbix-frontend" - com.zabbix.webserver: "apache2" - com.zabbix.dbtype: "pgsql" com.zabbix.os: "${ALPINE_OS_TAG}" zabbix-web-nginx-pgsql: + extends: + file: compose_zabbix_components.yaml + service: zabbix-web-nginx-pgsql build: context: ./Dockerfiles/web-nginx-pgsql/${ALPINE_OS_TAG_SHORT} cache_from: @@ -303,256 +130,86 @@ services: args: BUILD_BASE_IMAGE: ${BUILD_BASE_PGSQL_IMAGE}:${ZABBIX_ALPINE_IMAGE_TAG}${ZABBIX_LOCAL_IMAGE_TAG_POSTFIX} image: zabbix-web-nginx-pgsql:${ZABBIX_ALPINE_IMAGE_TAG}${ZABBIX_LOCAL_IMAGE_TAG_POSTFIX} - ports: - - "${ZABBIX_WEB_NGINX_HTTP_PORT}:8080" - - "${ZABBIX_WEB_NGINX_HTTPS_PORT}:8443" - restart: "${RESTART_POLICY}" volumes: - - /etc/localtime:/etc/localtime:ro - /etc/timezone:/etc/timezone:ro - - ${DATA_DIRECTORY}/etc/ssl/nginx:/etc/ssl/nginx:ro - - ${DATA_DIRECTORY}/usr/share/zabbix/modules/:/usr/share/zabbix/modules/:ro -# - ${ENV_VARS_DIRECTORY}/.ZBX_DB_CA_FILE:/run/secrets/root-ca.pem:ro -# - ${ENV_VARS_DIRECTORY}/.ZBX_DB_CERT_FILE:/run/secrets/client-cert.pem:ro -# - ${ENV_VARS_DIRECTORY}/.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_VARS_DIRECTORY}/.env_db_pgsql - - ${ENV_VARS_DIRECTORY}/.env_web - secrets: - - POSTGRES_USER - - POSTGRES_PASSWORD depends_on: - postgres-server - - zabbix-server - zabbix-build-pgsql - healthcheck: - test: ["CMD", "curl", "-f", "http://localhost:8080/ping"] - interval: 10s - timeout: 5s - retries: 3 - start_period: 30s - networks: - zbx_net_backend: - aliases: - - zabbix-web-nginx-pgsql - 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: "${ALPINE_OS_TAG}" zabbix-agent: + extends: + file: compose_zabbix_components.yaml + service: zabbix-agent build: context: ./Dockerfiles/agent/${ALPINE_OS_TAG_SHORT} cache_from: - "${ALPINE_CACHE_FROM}" args: - BUILD_BASE_IMAGE: ${BUILD_BASE_PGSQL_IMAGE}:${ZABBIX_ALPINE_IMAGE_TAG}${ZABBIX_LOCAL_IMAGE_TAG_POSTFIX} + BUILD_BASE_IMAGE: ${BUILD_BASE_MYSQL_IMAGE}:${ZABBIX_ALPINE_IMAGE_TAG}${ZABBIX_LOCAL_IMAGE_TAG_POSTFIX} image: zabbix-agent:${ZABBIX_ALPINE_IMAGE_TAG}${ZABBIX_LOCAL_IMAGE_TAG_POSTFIX} - init: true - profiles: - - full - - all - ports: - - "${ZABBIX_AGENT_PORT}:10050" - restart: "${RESTART_POLICY}" volumes: - - /etc/localtime:/etc/localtime:ro - /etc/timezone:/etc/timezone:ro - - ${DATA_DIRECTORY}/etc/zabbix/zabbix_agentd.d:/etc/zabbix/zabbix_agentd.d:ro - - ${DATA_DIRECTORY}/var/lib/zabbix/modules:/var/lib/zabbix/modules:ro - - ${DATA_DIRECTORY}/var/lib/zabbix/enc:/var/lib/zabbix/enc:ro - - ${DATA_DIRECTORY}/var/lib/zabbix/ssh_keys:/var/lib/zabbix/ssh_keys:ro - deploy: - resources: - limits: - cpus: '0.2' - memory: 128M - reservations: - cpus: '0.1' - memory: 64M - mode: global - env_file: - - ${ENV_VARS_DIRECTORY}/.env_agent - privileged: true - pid: "host" depends_on: - zabbix-build-pgsql - networks: - zbx_net_backend: - aliases: - - zabbix-agent - - zabbix-agent-passive - stop_grace_period: 5s labels: - com.zabbix.description: "Zabbix agent" - com.zabbix.company: "Zabbix LLC" - com.zabbix.component: "zabbix-agentd" com.zabbix.os: "${ALPINE_OS_TAG}" zabbix-java-gateway: + extends: + file: compose_zabbix_components.yaml + service: zabbix-java-gateway build: context: ./Dockerfiles/java-gateway/${ALPINE_OS_TAG_SHORT} cache_from: - "${ALPINE_CACHE_FROM}" args: - BUILD_BASE_IMAGE: ${BUILD_BASE_PGSQL_IMAGE}:${ZABBIX_ALPINE_IMAGE_TAG}${ZABBIX_LOCAL_IMAGE_TAG_POSTFIX} + BUILD_BASE_IMAGE: ${BUILD_BASE_MYSQL_IMAGE}:${ZABBIX_ALPINE_IMAGE_TAG}${ZABBIX_LOCAL_IMAGE_TAG_POSTFIX} image: zabbix-java-gateway:${ZABBIX_ALPINE_IMAGE_TAG}${ZABBIX_LOCAL_IMAGE_TAG_POSTFIX} - profiles: - - full - - all - ports: - - "${ZABBIX_JAVA_GATEWAY_PORT}:10052" - restart: "${RESTART_POLICY}" - deploy: - resources: - limits: - cpus: '0.5' - memory: 512M - reservations: - cpus: '0.25' - memory: 256M - env_file: - - ${ENV_VARS_DIRECTORY}/.env_java depends_on: - zabbix-build-pgsql - networks: - zbx_net_backend: - aliases: - - zabbix-java-gateway - stop_grace_period: 5s labels: - com.zabbix.description: "Zabbix Java Gateway" - com.zabbix.company: "Zabbix LLC" - com.zabbix.component: "java-gateway" com.zabbix.os: "${ALPINE_OS_TAG}" zabbix-snmptraps: + extends: + file: compose_zabbix_components.yaml + service: zabbix-snmptraps build: context: ./Dockerfiles/snmptraps/${ALPINE_OS_TAG_SHORT} cache_from: - "${ALPINE_CACHE_FROM}" image: zabbix-snmptraps:${ZABBIX_ALPINE_IMAGE_TAG}${ZABBIX_LOCAL_IMAGE_TAG_POSTFIX} -# Override snmptrapd command arguments to receive SNMP traps by DNS -# It must be done with ZBX_SNMP_TRAP_USE_DNS=true environment variable -# command: /usr/sbin/snmptrapd -C -c /etc/snmp/snmptrapd.conf -Lo -A - profiles: - - full - - all - ports: - - "${ZABBIX_SNMPTRAPS_PORT}:1162/udp" - restart: "${RESTART_POLICY}" - volumes: - - snmptraps:/var/lib/zabbix/snmptraps:rw - deploy: - resources: - limits: - cpus: '0.5' - memory: 256M - reservations: - cpus: '0.25' - memory: 128M - env_file: - - ${ENV_VARS_DIRECTORY}/.env_snmptraps - networks: - zbx_net_frontend: - aliases: - - zabbix-snmptraps - zbx_net_backend: - stop_grace_period: 5s + depends_on: + - zabbix-build-pgsql labels: - com.zabbix.description: "Zabbix snmptraps" - com.zabbix.company: "Zabbix LLC" - com.zabbix.component: "snmptraps" com.zabbix.os: "${ALPINE_OS_TAG}" mysql-server: - image: "${MYSQL_IMAGE}:${MYSQL_IMAGE_TAG}" - profiles: - - all - command: - - mysqld - - --character-set-server=utf8 - - --collation-server=utf8_bin - - --default-authentication-plugin=mysql_native_password - restart: "${RESTART_POLICY}" - volumes: - - ${DATA_DIRECTORY}/var/lib/mysql:/var/lib/mysql:rw - env_file: - - ${ENV_VARS_DIRECTORY}/.env_db_mysql - secrets: - - MYSQL_USER - - MYSQL_PASSWORD - - MYSQL_ROOT_PASSWORD - stop_grace_period: 1m - networks: - zbx_net_backend: - aliases: - - mysql-server - - zabbix-database - - mysql-database + extends: + file: compose_databases.yaml + service: mysql-server postgres-server: - image: "${POSTGRESQL_IMAGE}:${POSTGRESQL_IMAGE_TAG}" -# 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 - restart: "${RESTART_POLICY}" - volumes: - - ${DATA_DIRECTORY}/var/lib/postgresql/data:/var/lib/postgresql/data:rw - - ${ENV_VARS_DIRECTORY}/.ZBX_DB_CA_FILE:/run/secrets/root-ca.pem:ro - - ${ENV_VARS_DIRECTORY}/.ZBX_DB_CERT_FILE:/run/secrets/server-cert.pem:ro - - ${ENV_VARS_DIRECTORY}/.ZBX_DB_KEY_FILE:/run/secrets/server-key.pem:ro - env_file: - - ${ENV_VARS_DIRECTORY}/.env_db_pgsql - secrets: - - POSTGRES_USER - - POSTGRES_PASSWORD - stop_grace_period: 1m - networks: - zbx_net_backend: - aliases: - - postgres-server - - pgsql-server - - pgsql-database + extends: + file: compose_databases.yaml + service: postgres-server - db_data_mysql: - image: busybox - profiles: - - all - volumes: - - ${DATA_DIRECTORY}/var/lib/mysql:/var/lib/mysql:rw + db-data-mysql: + extends: + file: compose_databases.yaml + service: db-data-mysql - db_data_pgsql: - image: busybox - volumes: - - ${DATA_DIRECTORY}/var/lib/postgresql/data:/var/lib/postgresql/data:rw + db-data-pgsql: + extends: + file: compose_databases.yaml + service: db-data-pgsql # elasticsearch: -# image: "${ELASTICSEARCH_IMAGE}:${ELASTICSEARCH_IMAGE_TAG}" -# restart: "${RESTART_POLICY}" -# profiles: -# - full -# - all -# environment: -# - transport.host=0.0.0.0 -# - discovery.zen.minimum_master_nodes=1 -# networks: -# zbx_net_backend: -# aliases: -# - elasticsearch +# extends: +# file: compose_databases.yaml +# service: elasticsearch networks: zbx_net_frontend: @@ -572,9 +229,17 @@ networks: driver: "${BACKEND_NETWORK_DRIVER}" config: - subnet: "${BACKEND_SUBNET}" + zbx_net_database: + driver: bridge + driver_opts: + com.docker.network.enable_ipv6: "${DATABASE_NETWORK_ENABLE_IPV6}" + internal: true + ipam: + driver: "${DATABASE_NETWORK_DRIVER}" volumes: snmptraps: +# dbsocket: secrets: MYSQL_USER: diff --git a/docker-compose_v3_centos_mysql_latest.yaml b/docker-compose_v3_centos_mysql_latest.yaml index 1195bfe5c..7b4bc8a58 100644 --- a/docker-compose_v3_centos_mysql_latest.yaml +++ b/docker-compose_v3_centos_mysql_latest.yaml @@ -1,445 +1,103 @@ version: '3.8' services: zabbix-server: + extends: + file: compose_zabbix_components.yaml + service: zabbix-server-mysql image: "${ZABBIX_SERVER_MYSQL_IMAGE}:${ZABBIX_CENTOS_IMAGE_TAG}${ZABBIX_IMAGE_TAG_POSTFIX}" - init: true - ports: - - "${ZABBIX_SERVER_PORT}:10051" - restart: "${RESTART_POLICY}" volumes: - - /etc/localtime:/etc/localtime:ro - /etc/timezone:/etc/timezone:ro -# - dbsocket:/var/run/mysqld/ - - ${DATA_DIRECTORY}/usr/lib/zabbix/alertscripts:/usr/lib/zabbix/alertscripts:ro - - ${DATA_DIRECTORY}/usr/lib/zabbix/externalscripts:/usr/lib/zabbix/externalscripts:ro - - ${DATA_DIRECTORY}/var/lib/zabbix/dbscripts:/var/lib/zabbix/dbscripts:ro - - ${DATA_DIRECTORY}/var/lib/zabbix/export:/var/lib/zabbix/export:rw - - ${DATA_DIRECTORY}/var/lib/zabbix/modules:/var/lib/zabbix/modules:ro - - ${DATA_DIRECTORY}/var/lib/zabbix/enc:/var/lib/zabbix/enc:ro - - ${DATA_DIRECTORY}/var/lib/zabbix/ssh_keys:/var/lib/zabbix/ssh_keys:ro - - ${DATA_DIRECTORY}/var/lib/zabbix/mibs:/var/lib/zabbix/mibs:ro - - snmptraps:/var/lib/zabbix/snmptraps:rw - 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_VARS_DIRECTORY}/.env_db_mysql - - ${ENV_VARS_DIRECTORY}/.env_srv - secrets: - - MYSQL_USER - - MYSQL_PASSWORD - - MYSQL_ROOT_USER - - MYSQL_ROOT_PASSWORD -# - client-key.pem -# - client-cert.pem -# - root-ca.pem depends_on: - mysql-server - networks: - zbx_net_backend: - aliases: - - zabbix-server - - zabbix-server-mysql - zbx_net_frontend: -# devices: -# - "/dev/ttyUSB0:/dev/ttyUSB0" - stop_grace_period: 30s - sysctls: - - net.ipv4.ip_local_port_range=1024 64999 - - 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 MySQL database support" - com.zabbix.company: "Zabbix LLC" - com.zabbix.component: "zabbix-server" - com.zabbix.dbtype: "mysql" com.zabbix.os: "${CENTOS_OS_TAG}" zabbix-proxy-sqlite3: + extends: + file: compose_zabbix_components.yaml + service: zabbix-proxy-sqlite3 image: "${ZABBIX_PROXY_SQLITE3_IMAGE}:${ZABBIX_CENTOS_IMAGE_TAG}${ZABBIX_IMAGE_TAG_POSTFIX}" - init: true - profiles: - - all - ports: - - "${ZABBIX_PROXY_SQLITE3_PORT}:10051" - restart: "${RESTART_POLICY}" volumes: - - /etc/localtime:/etc/localtime:ro - /etc/timezone:/etc/timezone:ro - - ${DATA_DIRECTORY}/usr/lib/zabbix/externalscripts:/usr/lib/zabbix/externalscripts:ro - - ${DATA_DIRECTORY}/var/lib/zabbix/modules:/var/lib/zabbix/modules:ro - - ${DATA_DIRECTORY}/var/lib/zabbix/enc:/var/lib/zabbix/enc:ro - - ${DATA_DIRECTORY}/var/lib/zabbix/ssh_keys:/var/lib/zabbix/ssh_keys:ro - - ${DATA_DIRECTORY}/var/lib/zabbix/mibs:/var/lib/zabbix/mibs:ro - - snmptraps:/var/lib/zabbix/snmptraps:rw - ulimits: - nproc: 65535 - nofile: - soft: 20000 - hard: 40000 - deploy: - resources: - limits: - cpus: '0.70' - memory: 512M - reservations: - cpus: '0.3' - memory: 256M - env_file: - - ${ENV_VARS_DIRECTORY}/.env_prx - - ${ENV_VARS_DIRECTORY}/.env_prx_sqlite3 - depends_on: - - zabbix-java-gateway - - zabbix-snmptraps - networks: - zbx_net_backend: - aliases: - - zabbix-proxy-sqlite3 - zbx_net_frontend: - stop_grace_period: 30s labels: - com.zabbix.description: "Zabbix proxy with SQLite3 database support" - com.zabbix.company: "Zabbix LLC" - com.zabbix.component: "zabbix-proxy" - com.zabbix.dbtype: "sqlite3" com.zabbix.os: "${CENTOS_OS_TAG}" zabbix-proxy-mysql: + extends: + file: compose_zabbix_components.yaml + service: zabbix-proxy-mysql image: "${ZABBIX_PROXY_MYSQL_IMAGE}:${ZABBIX_CENTOS_IMAGE_TAG}${ZABBIX_IMAGE_TAG_POSTFIX}" - init: true - profiles: - - all - ports: - - "${ZABBIX_PROXY_MYSQL_PORT}:10051" - restart: "${RESTART_POLICY}" volumes: - - /etc/localtime:/etc/localtime:ro - /etc/timezone:/etc/timezone:ro -# - dbsocket:/var/run/mysqld/ - - ${DATA_DIRECTORY}/usr/lib/zabbix/externalscripts:/usr/lib/zabbix/externalscripts:ro - - ${DATA_DIRECTORY}/var/lib/zabbix/modules:/var/lib/zabbix/modules:ro - - ${DATA_DIRECTORY}/var/lib/zabbix/enc:/var/lib/zabbix/enc:ro - - ${DATA_DIRECTORY}/var/lib/zabbix/ssh_keys:/var/lib/zabbix/ssh_keys:ro - - ${DATA_DIRECTORY}/var/lib/zabbix/mibs:/var/lib/zabbix/mibs:ro - - snmptraps:/var/lib/zabbix/snmptraps:rw - ulimits: - nproc: 65535 - nofile: - soft: 20000 - hard: 40000 - deploy: - resources: - limits: - cpus: '0.70' - memory: 512M - reservations: - cpus: '0.3' - memory: 256M - env_file: - - ${ENV_VARS_DIRECTORY}/.env_db_mysql_proxy - - ${ENV_VARS_DIRECTORY}/.env_prx - - ${ENV_VARS_DIRECTORY}/.env_prx_mysql depends_on: - mysql-server - - zabbix-java-gateway - - zabbix-snmptraps - secrets: - - MYSQL_USER - - MYSQL_PASSWORD - - MYSQL_ROOT_USER - - MYSQL_ROOT_PASSWORD -# - client-key.pem -# - client-cert.pem -# - root-ca.pem - networks: - zbx_net_backend: - aliases: - - zabbix-proxy-mysql - zbx_net_frontend: - stop_grace_period: 30s labels: - com.zabbix.description: "Zabbix proxy with MySQL database support" - com.zabbix.company: "Zabbix LLC" - com.zabbix.component: "zabbix-proxy" - com.zabbix.dbtype: "mysql" com.zabbix.os: "${CENTOS_OS_TAG}" zabbix-web-apache-mysql: + extends: + file: compose_zabbix_components.yaml + service: zabbix-web-apache-mysql image: "${ZABBIX_WEB_APACHE_MYSQL_IMAGE}:${ZABBIX_CENTOS_IMAGE_TAG}${ZABBIX_IMAGE_TAG_POSTFIX}" - profiles: - - all - ports: - - "${ZABBIX_WEB_APACHE_HTTP_PORT}:8080" - - "${ZABBIX_WEB_APACHE_HTTPS_PORT}:8443" - restart: "${RESTART_POLICY}" volumes: - - /etc/localtime:/etc/localtime:ro - /etc/timezone:/etc/timezone:ro -# - dbsocket:/var/run/mysqld/ - - ${DATA_DIRECTORY}/etc/ssl/apache2:/etc/ssl/apache2:ro - - ${DATA_DIRECTORY}/usr/share/zabbix/modules/:/usr/share/zabbix/modules/:ro - deploy: - resources: - limits: - cpus: '0.70' - memory: 512M - reservations: - cpus: '0.5' - memory: 256M - env_file: - - ${ENV_VARS_DIRECTORY}/.env_db_mysql - - ${ENV_VARS_DIRECTORY}/.env_web - secrets: - - MYSQL_USER - - MYSQL_PASSWORD -# - client-key.pem -# - client-cert.pem -# - root-ca.pem depends_on: - mysql-server - - zabbix-server - healthcheck: - test: ["CMD", "curl", "-f", "http://localhost:8080/ping"] - interval: 10s - timeout: 5s - retries: 3 - start_period: 30s - networks: - zbx_net_backend: - aliases: - - zabbix-web-apache-mysql - zbx_net_frontend: - stop_grace_period: 10s - sysctls: - - net.core.somaxconn=65535 labels: - com.zabbix.description: "Zabbix frontend on Apache web-server with MySQL database support" - com.zabbix.company: "Zabbix LLC" - com.zabbix.component: "zabbix-frontend" - com.zabbix.webserver: "apache2" - com.zabbix.dbtype: "mysql" com.zabbix.os: "${CENTOS_OS_TAG}" zabbix-web-nginx-mysql: + extends: + file: compose_zabbix_components.yaml + service: zabbix-web-nginx-mysql image: "${ZABBIX_WEB_NGINX_MYSQL_IMAGE}:${ZABBIX_CENTOS_IMAGE_TAG}${ZABBIX_IMAGE_TAG_POSTFIX}" - ports: - - "${ZABBIX_WEB_NGINX_HTTP_PORT}:8080" - - "${ZABBIX_WEB_NGINX_HTTPS_PORT}:8443" - restart: "${RESTART_POLICY}" volumes: - - /etc/localtime:/etc/localtime:ro - /etc/timezone:/etc/timezone:ro -# - dbsocket:/var/run/mysqld/ - - ${DATA_DIRECTORY}/etc/ssl/nginx:/etc/ssl/nginx:ro - - ${DATA_DIRECTORY}/usr/share/zabbix/modules/:/usr/share/zabbix/modules/:ro - deploy: - resources: - limits: - cpus: '0.70' - memory: 512M - reservations: - cpus: '0.5' - memory: 256M - env_file: - - ${ENV_VARS_DIRECTORY}/.env_db_mysql - - ${ENV_VARS_DIRECTORY}/.env_web - secrets: - - MYSQL_USER - - MYSQL_PASSWORD -# - client-key.pem -# - client-cert.pem -# - root-ca.pem depends_on: - mysql-server - - zabbix-server - healthcheck: - test: ["CMD", "curl", "-f", "http://localhost:8080/ping"] - interval: 10s - timeout: 5s - retries: 3 - start_period: 30s - networks: - zbx_net_backend: - aliases: - - zabbix-web-nginx-mysql - zbx_net_frontend: - stop_grace_period: 10s - sysctls: - - net.core.somaxconn=65535 labels: - com.zabbix.description: "Zabbix frontend on Nginx web-server with MySQL database support" - com.zabbix.company: "Zabbix LLC" - com.zabbix.component: "zabbix-frontend" - com.zabbix.webserver: "nginx" - com.zabbix.dbtype: "mysql" com.zabbix.os: "${CENTOS_OS_TAG}" zabbix-agent: + extends: + file: compose_zabbix_components.yaml + service: zabbix-agent image: "${ZABBIX_AGENT_IMAGE}:${ZABBIX_CENTOS_IMAGE_TAG}${ZABBIX_IMAGE_TAG_POSTFIX}" - init: true - profiles: - - full - - all - ports: - - "${ZABBIX_AGENT_PORT}:10050" - restart: "${RESTART_POLICY}" volumes: - - /etc/localtime:/etc/localtime:ro - /etc/timezone:/etc/timezone:ro - - ${DATA_DIRECTORY}/etc/zabbix/zabbix_agentd.d:/etc/zabbix/zabbix_agentd.d:ro - - ${DATA_DIRECTORY}/var/lib/zabbix/modules:/var/lib/zabbix/modules:ro - - ${DATA_DIRECTORY}/var/lib/zabbix/enc:/var/lib/zabbix/enc:ro - - ${DATA_DIRECTORY}/var/lib/zabbix/ssh_keys:/var/lib/zabbix/ssh_keys:ro - deploy: - resources: - limits: - cpus: '0.2' - memory: 128M - reservations: - cpus: '0.1' - memory: 64M - mode: global - env_file: - - ${ENV_VARS_DIRECTORY}/.env_agent - privileged: true - pid: "host" - networks: - zbx_net_backend: - aliases: - - zabbix-agent - - zabbix-agent-passive - stop_grace_period: 5s labels: - com.zabbix.description: "Zabbix agent" - com.zabbix.company: "Zabbix LLC" - com.zabbix.component: "zabbix-agentd" com.zabbix.os: "${CENTOS_OS_TAG}" zabbix-java-gateway: + extends: + file: compose_zabbix_components.yaml + service: zabbix-java-gateway image: "${ZABBIX_JAVA_GATEWAY_IMAGE}:${ZABBIX_CENTOS_IMAGE_TAG}${ZABBIX_IMAGE_TAG_POSTFIX}" - profiles: - - full - - all - ports: - - "${ZABBIX_JAVA_GATEWAY_PORT}:10052" - restart: "${RESTART_POLICY}" - deploy: - resources: - limits: - cpus: '0.5' - memory: 512M - reservations: - cpus: '0.25' - memory: 256M - env_file: - - ${ENV_VARS_DIRECTORY}/.env_java - networks: - zbx_net_backend: - aliases: - - zabbix-java-gateway - stop_grace_period: 5s labels: - com.zabbix.description: "Zabbix Java Gateway" - com.zabbix.company: "Zabbix LLC" - com.zabbix.component: "java-gateway" com.zabbix.os: "${CENTOS_OS_TAG}" zabbix-snmptraps: + extends: + file: compose_zabbix_components.yaml + service: zabbix-snmptraps image: "${ZABBIX_SNMPTRAPS_IMAGE}:${ZABBIX_CENTOS_IMAGE_TAG}${ZABBIX_IMAGE_TAG_POSTFIX}" -# Override snmptrapd command arguments to receive SNMP traps by DNS -# It must be done with ZBX_SNMP_TRAP_USE_DNS=true environment variable -# command: /usr/sbin/snmptrapd -C -c /etc/snmp/snmptrapd.conf -Lo -A - profiles: - - full - - all - ports: - - "${ZABBIX_SNMPTRAPS_PORT}:1162/udp" - restart: "${RESTART_POLICY}" - volumes: - - snmptraps:/var/lib/zabbix/snmptraps:rw - deploy: - resources: - limits: - cpus: '0.5' - memory: 256M - reservations: - cpus: '0.25' - memory: 128M - env_file: - - ${ENV_VARS_DIRECTORY}/.env_snmptraps - networks: - zbx_net_frontend: - aliases: - - zabbix-snmptraps - zbx_net_backend: - stop_grace_period: 5s labels: - com.zabbix.description: "Zabbix snmptraps" - com.zabbix.company: "Zabbix LLC" - com.zabbix.component: "snmptraps" com.zabbix.os: "${CENTOS_OS_TAG}" mysql-server: - image: "${MYSQL_IMAGE}:${MYSQL_IMAGE_TAG}" - command: - - mysqld - - --character-set-server=utf8 - - --collation-server=utf8_bin - - --default-authentication-plugin=mysql_native_password -# - --require-secure-transport -# - --ssl-ca=/run/secrets/root-ca.pem -# - --ssl-cert=/run/secrets/server-cert.pem -# - --ssl-key=/run/secrets/server-key.pem - restart: "${RESTART_POLICY}" - volumes: - - ${DATA_DIRECTORY}/var/lib/mysql:/var/lib/mysql:rw -# - dbsocket:/var/run/mysqld/ - env_file: - - ${ENV_VARS_DIRECTORY}/.env_db_mysql - secrets: - - MYSQL_USER - - MYSQL_PASSWORD - - MYSQL_ROOT_PASSWORD -# - server-key.pem -# - server-cert.pem -# - root-ca.pem - stop_grace_period: 1m - networks: - zbx_net_backend: - aliases: - - mysql-server - - zabbix-database - - mysql-database + extends: + file: compose_databases.yaml + service: mysql-server - db_data_mysql: - image: busybox - volumes: - - ${DATA_DIRECTORY}/var/lib/mysql:/var/lib/mysql:rw + db-data-mysql: + extends: + file: compose_databases.yaml + service: db-data-mysql # elasticsearch: -# image: "${ELASTICSEARCH_IMAGE}:${ELASTICSEARCH_IMAGE_TAG}" -# restart: "${RESTART_POLICY}" -# profiles: -# - full -# - all -# environment: -# - transport.host=0.0.0.0 -# - discovery.zen.minimum_master_nodes=1 -# networks: -# zbx_net_backend: -# aliases: -# - elasticsearch +# extends: +# file: compose_databases.yaml +# service: elasticsearch networks: zbx_net_frontend: @@ -459,6 +117,13 @@ networks: driver: "${BACKEND_NETWORK_DRIVER}" config: - subnet: "${BACKEND_SUBNET}" + zbx_net_database: + driver: bridge + driver_opts: + com.docker.network.enable_ipv6: "${DATABASE_NETWORK_ENABLE_IPV6}" + internal: true + ipam: + driver: "${DATABASE_NETWORK_DRIVER}" volumes: snmptraps: diff --git a/docker-compose_v3_centos_mysql_local.yaml b/docker-compose_v3_centos_mysql_local.yaml index ce6e55ad8..b66839945 100644 --- a/docker-compose_v3_centos_mysql_local.yaml +++ b/docker-compose_v3_centos_mysql_local.yaml @@ -32,6 +32,9 @@ services: - zabbix-build-base zabbix-server: + extends: + file: compose_zabbix_components.yaml + service: zabbix-server-mysql build: context: ./Dockerfiles/server-mysql/${CENTOS_OS_TAG_SHORT} cache_from: @@ -39,72 +42,19 @@ services: args: BUILD_BASE_IMAGE: ${BUILD_BASE_MYSQL_IMAGE}:${ZABBIX_CENTOS_IMAGE_TAG}${ZABBIX_LOCAL_IMAGE_TAG_POSTFIX} image: zabbix-server-mysql:${ZABBIX_CENTOS_IMAGE_TAG}${ZABBIX_LOCAL_IMAGE_TAG_POSTFIX} - init: true - ports: - - "${ZABBIX_SERVER_PORT}:10051" - restart: "${RESTART_POLICY}" volumes: - - /etc/localtime:/etc/localtime:ro - /etc/timezone:/etc/timezone:ro -# - dbsocket:/var/run/mysqld/ - - ${DATA_DIRECTORY}/usr/lib/zabbix/alertscripts:/usr/lib/zabbix/alertscripts:ro - - ${DATA_DIRECTORY}/usr/lib/zabbix/externalscripts:/usr/lib/zabbix/externalscripts:ro - - ${DATA_DIRECTORY}/var/lib/zabbix/dbscripts:/var/lib/zabbix/dbscripts:ro - - ${DATA_DIRECTORY}/var/lib/zabbix/export:/var/lib/zabbix/export:rw - - ${DATA_DIRECTORY}/var/lib/zabbix/modules:/var/lib/zabbix/modules:ro - - ${DATA_DIRECTORY}/var/lib/zabbix/enc:/var/lib/zabbix/enc:ro - - ${DATA_DIRECTORY}/var/lib/zabbix/ssh_keys:/var/lib/zabbix/ssh_keys:ro - - ${DATA_DIRECTORY}/var/lib/zabbix/mibs:/var/lib/zabbix/mibs:ro - - snmptraps:/var/lib/zabbix/snmptraps:rw - 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_VARS_DIRECTORY}/.env_db_mysql - - ${ENV_VARS_DIRECTORY}/.env_srv - secrets: - - MYSQL_USER - - MYSQL_PASSWORD - - MYSQL_ROOT_USER - - MYSQL_ROOT_PASSWORD -# - client-key.pem -# - client-cert.pem -# - root-ca.pem depends_on: - mysql-server - zabbix-build-mysql - networks: - zbx_net_backend: - aliases: - - zabbix-server - - zabbix-server-mysql - zbx_net_frontend: -# devices: -# - "/dev/ttyUSB0:/dev/ttyUSB0" - stop_grace_period: 30s - sysctls: - - net.ipv4.ip_local_port_range=1024 64999 - - 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 MySQL database support" - com.zabbix.company: "Zabbix LLC" - com.zabbix.component: "zabbix-server" - com.zabbix.dbtype: "mysql" com.zabbix.os: "${CENTOS_OS_TAG}" zabbix-proxy-sqlite3: + extends: + file: compose_zabbix_components.yaml + service: zabbix-proxy-sqlite3 build: context: ./Dockerfiles/proxy-sqlite3/${CENTOS_OS_TAG_SHORT} cache_from: @@ -112,55 +62,17 @@ services: args: BUILD_BASE_IMAGE: ${BUILD_BASE_SQLITE3_IMAGE}:${ZABBIX_CENTOS_IMAGE_TAG}${ZABBIX_LOCAL_IMAGE_TAG_POSTFIX} image: zabbix-proxy-sqlite3:${ZABBIX_CENTOS_IMAGE_TAG}${ZABBIX_LOCAL_IMAGE_TAG_POSTFIX} - init: true - profiles: - - all - ports: - - "${ZABBIX_PROXY_SQLITE3_PORT}:10051" - restart: "${RESTART_POLICY}" volumes: - - /etc/localtime:/etc/localtime:ro - /etc/timezone:/etc/timezone:ro - - ${DATA_DIRECTORY}/usr/lib/zabbix/externalscripts:/usr/lib/zabbix/externalscripts:ro - - ${DATA_DIRECTORY}/var/lib/zabbix/modules:/var/lib/zabbix/modules:ro - - ${DATA_DIRECTORY}/var/lib/zabbix/enc:/var/lib/zabbix/enc:ro - - ${DATA_DIRECTORY}/var/lib/zabbix/ssh_keys:/var/lib/zabbix/ssh_keys:ro - - ${DATA_DIRECTORY}/var/lib/zabbix/mibs:/var/lib/zabbix/mibs:ro - - snmptraps:/var/lib/zabbix/snmptraps:rw - ulimits: - nproc: 65535 - nofile: - soft: 20000 - hard: 40000 - deploy: - resources: - limits: - cpus: '0.70' - memory: 512M - reservations: - cpus: '0.3' - memory: 256M - env_file: - - ${ENV_VARS_DIRECTORY}/.env_prx - - ${ENV_VARS_DIRECTORY}/.env_prx_sqlite3 depends_on: - - zabbix-java-gateway - - zabbix-snmptraps - zabbix-build-sqlite3 - networks: - zbx_net_backend: - aliases: - - zabbix-proxy-sqlite3 - zbx_net_frontend: - stop_grace_period: 30s labels: - com.zabbix.description: "Zabbix proxy with SQLite3 database support" - com.zabbix.company: "Zabbix LLC" - com.zabbix.component: "zabbix-proxy" - com.zabbix.dbtype: "sqlite3" com.zabbix.os: "${CENTOS_OS_TAG}" zabbix-proxy-mysql: + extends: + file: compose_zabbix_components.yaml + service: zabbix-proxy-mysql build: context: ./Dockerfiles/proxy-mysql/${CENTOS_OS_TAG_SHORT} cache_from: @@ -168,66 +80,18 @@ services: args: BUILD_BASE_IMAGE: ${BUILD_BASE_MYSQL_IMAGE}:${ZABBIX_CENTOS_IMAGE_TAG}${ZABBIX_LOCAL_IMAGE_TAG_POSTFIX} image: zabbix-proxy-mysql:${ZABBIX_CENTOS_IMAGE_TAG}${ZABBIX_LOCAL_IMAGE_TAG_POSTFIX} - init: true - profiles: - - all - ports: - - "${ZABBIX_PROXY_MYSQL_PORT}:10051" - restart: "${RESTART_POLICY}" volumes: - - /etc/localtime:/etc/localtime:ro - /etc/timezone:/etc/timezone:ro -# - dbsocket:/var/run/mysqld/ - - ${DATA_DIRECTORY}/usr/lib/zabbix/externalscripts:/usr/lib/zabbix/externalscripts:ro - - ${DATA_DIRECTORY}/var/lib/zabbix/modules:/var/lib/zabbix/modules:ro - - ${DATA_DIRECTORY}/var/lib/zabbix/enc:/var/lib/zabbix/enc:ro - - ${DATA_DIRECTORY}/var/lib/zabbix/ssh_keys:/var/lib/zabbix/ssh_keys:ro - - ${DATA_DIRECTORY}/var/lib/zabbix/mibs:/var/lib/zabbix/mibs:ro - - snmptraps:/var/lib/zabbix/snmptraps:rw - ulimits: - nproc: 65535 - nofile: - soft: 20000 - hard: 40000 - deploy: - resources: - limits: - cpus: '0.70' - memory: 512M - reservations: - cpus: '0.3' - memory: 256M - env_file: - - ${ENV_VARS_DIRECTORY}/.env_db_mysql_proxy - - ${ENV_VARS_DIRECTORY}/.env_prx - - ${ENV_VARS_DIRECTORY}/.env_prx_mysql depends_on: - mysql-server - - zabbix-java-gateway - - zabbix-snmptraps - zabbix-build-mysql - secrets: - - MYSQL_USER - - MYSQL_PASSWORD - - MYSQL_ROOT_USER - - MYSQL_ROOT_PASSWORD -# - client-key.pem -# - client-cert.pem -# - root-ca.pem - networks: - zbx_net_backend: - aliases: - - zabbix-proxy-mysql - zbx_net_frontend: - stop_grace_period: 30s labels: - com.zabbix.description: "Zabbix proxy with MySQL database support" - com.zabbix.company: "Zabbix LLC" - com.zabbix.component: "zabbix-proxy" - com.zabbix.dbtype: "mysql" com.zabbix.os: "${CENTOS_OS_TAG}" zabbix-web-apache-mysql: + extends: + file: compose_zabbix_components.yaml + service: zabbix-web-apache-mysql build: context: ./Dockerfiles/web-apache-mysql/${CENTOS_OS_TAG_SHORT} cache_from: @@ -235,62 +99,18 @@ services: args: BUILD_BASE_IMAGE: ${BUILD_BASE_MYSQL_IMAGE}:${ZABBIX_CENTOS_IMAGE_TAG}${ZABBIX_LOCAL_IMAGE_TAG_POSTFIX} image: zabbix-web-apache-mysql:${ZABBIX_CENTOS_IMAGE_TAG}${ZABBIX_LOCAL_IMAGE_TAG_POSTFIX} - profiles: - - all - ports: - - "${ZABBIX_WEB_APACHE_HTTP_PORT}:8080" - - "${ZABBIX_WEB_APACHE_HTTPS_PORT}:8443" - restart: "${RESTART_POLICY}" volumes: - - /etc/localtime:/etc/localtime:ro - /etc/timezone:/etc/timezone:ro -# - dbsocket:/var/run/mysqld/ - - ${DATA_DIRECTORY}/etc/ssl/apache2:/etc/ssl/apache2:ro - - ${DATA_DIRECTORY}/usr/share/zabbix/modules/:/usr/share/zabbix/modules/:ro - deploy: - resources: - limits: - cpus: '0.70' - memory: 512M - reservations: - cpus: '0.5' - memory: 256M - env_file: - - ${ENV_VARS_DIRECTORY}/.env_db_mysql - - ${ENV_VARS_DIRECTORY}/.env_web - secrets: - - MYSQL_USER - - MYSQL_PASSWORD -# - client-key.pem -# - client-cert.pem -# - root-ca.pem depends_on: - mysql-server - - zabbix-server - zabbix-build-mysql - healthcheck: - test: ["CMD", "curl", "-f", "http://localhost:8080/ping"] - interval: 10s - timeout: 5s - retries: 3 - start_period: 30s - networks: - zbx_net_backend: - aliases: - - zabbix-web-apache-mysql - zbx_net_frontend: - stop_grace_period: 10s - sysctls: - - net.core.somaxconn=65535 labels: - com.zabbix.description: "Zabbix frontend on Apache web-server with MySQL database support" - com.zabbix.company: "Zabbix LLC" - com.zabbix.component: "zabbix-frontend" - com.zabbix.webserver: "apache2" - com.zabbix.dbtype: "mysql" com.zabbix.os: "${CENTOS_OS_TAG}" zabbix-web-nginx-mysql: + extends: + file: compose_zabbix_components.yaml + service: zabbix-web-nginx-mysql build: context: ./Dockerfiles/web-nginx-mysql/${CENTOS_OS_TAG_SHORT} cache_from: @@ -298,60 +118,18 @@ services: args: BUILD_BASE_IMAGE: ${BUILD_BASE_MYSQL_IMAGE}:${ZABBIX_CENTOS_IMAGE_TAG}${ZABBIX_LOCAL_IMAGE_TAG_POSTFIX} image: zabbix-web-nginx-mysql:${ZABBIX_CENTOS_IMAGE_TAG}${ZABBIX_LOCAL_IMAGE_TAG_POSTFIX} - ports: - - "${ZABBIX_WEB_NGINX_HTTP_PORT}:8080" - - "${ZABBIX_WEB_NGINX_HTTPS_PORT}:8443" - restart: "${RESTART_POLICY}" volumes: - - /etc/localtime:/etc/localtime:ro - /etc/timezone:/etc/timezone:ro -# - dbsocket:/var/run/mysqld/ - - ${DATA_DIRECTORY}/etc/ssl/nginx:/etc/ssl/nginx:ro - - ${DATA_DIRECTORY}/usr/share/zabbix/modules/:/usr/share/zabbix/modules/:ro - deploy: - resources: - limits: - cpus: '0.70' - memory: 512M - reservations: - cpus: '0.5' - memory: 256M - env_file: - - ${ENV_VARS_DIRECTORY}/.env_db_mysql - - ${ENV_VARS_DIRECTORY}/.env_web - secrets: - - MYSQL_USER - - MYSQL_PASSWORD -# - client-key.pem -# - client-cert.pem -# - root-ca.pem depends_on: - mysql-server - - zabbix-server - zabbix-build-mysql - healthcheck: - test: ["CMD", "curl", "-f", "http://localhost:8080/ping"] - interval: 10s - timeout: 5s - retries: 3 - start_period: 30s - networks: - zbx_net_backend: - aliases: - - zabbix-web-nginx-mysql - zbx_net_frontend: - stop_grace_period: 10s - sysctls: - - net.core.somaxconn=65535 labels: - com.zabbix.description: "Zabbix frontend on Nginx web-server with MySQL database support" - com.zabbix.company: "Zabbix LLC" - com.zabbix.component: "zabbix-frontend" - com.zabbix.webserver: "nginx" - com.zabbix.dbtype: "mysql" com.zabbix.os: "${CENTOS_OS_TAG}" zabbix-agent: + extends: + file: compose_zabbix_components.yaml + service: zabbix-agent build: context: ./Dockerfiles/agent/${CENTOS_OS_TAG_SHORT} cache_from: @@ -359,48 +137,17 @@ services: args: BUILD_BASE_IMAGE: ${BUILD_BASE_MYSQL_IMAGE}:${ZABBIX_CENTOS_IMAGE_TAG}${ZABBIX_LOCAL_IMAGE_TAG_POSTFIX} image: zabbix-agent:${ZABBIX_CENTOS_IMAGE_TAG}${ZABBIX_LOCAL_IMAGE_TAG_POSTFIX} - init: true - profiles: - - full - - all - ports: - - "${ZABBIX_AGENT_PORT}:10050" - restart: "${RESTART_POLICY}" volumes: - - /etc/localtime:/etc/localtime:ro - /etc/timezone:/etc/timezone:ro - - ${DATA_DIRECTORY}/etc/zabbix/zabbix_agentd.d:/etc/zabbix/zabbix_agentd.d:ro - - ${DATA_DIRECTORY}/var/lib/zabbix/modules:/var/lib/zabbix/modules:ro - - ${DATA_DIRECTORY}/var/lib/zabbix/enc:/var/lib/zabbix/enc:ro - - ${DATA_DIRECTORY}/var/lib/zabbix/ssh_keys:/var/lib/zabbix/ssh_keys:ro - deploy: - resources: - limits: - cpus: '0.2' - memory: 128M - reservations: - cpus: '0.1' - memory: 64M - mode: global - env_file: - - ${ENV_VARS_DIRECTORY}/.env_agent - privileged: true - pid: "host" depends_on: - zabbix-build-mysql - networks: - zbx_net_backend: - aliases: - - zabbix-agent - - zabbix-agent-passive - stop_grace_period: 5s labels: - com.zabbix.description: "Zabbix agent" - com.zabbix.company: "Zabbix LLC" - com.zabbix.component: "zabbix-agentd" com.zabbix.os: "${CENTOS_OS_TAG}" zabbix-java-gateway: + extends: + file: compose_zabbix_components.yaml + service: zabbix-java-gateway build: context: ./Dockerfiles/java-gateway/${CENTOS_OS_TAG_SHORT} cache_from: @@ -408,124 +155,39 @@ services: args: BUILD_BASE_IMAGE: ${BUILD_BASE_MYSQL_IMAGE}:${ZABBIX_CENTOS_IMAGE_TAG}${ZABBIX_LOCAL_IMAGE_TAG_POSTFIX} image: zabbix-java-gateway:${ZABBIX_CENTOS_IMAGE_TAG}${ZABBIX_LOCAL_IMAGE_TAG_POSTFIX} - profiles: - - full - - all - ports: - - "${ZABBIX_JAVA_GATEWAY_PORT}:10052" - restart: "${RESTART_POLICY}" - deploy: - resources: - limits: - cpus: '0.5' - memory: 512M - reservations: - cpus: '0.25' - memory: 256M - env_file: - - ${ENV_VARS_DIRECTORY}/.env_java depends_on: - zabbix-build-mysql - networks: - zbx_net_backend: - aliases: - - zabbix-java-gateway - stop_grace_period: 5s labels: - com.zabbix.description: "Zabbix Java Gateway" - com.zabbix.company: "Zabbix LLC" - com.zabbix.component: "java-gateway" com.zabbix.os: "${CENTOS_OS_TAG}" zabbix-snmptraps: + extends: + file: compose_zabbix_components.yaml + service: zabbix-snmptraps build: context: ./Dockerfiles/snmptraps/${CENTOS_OS_TAG_SHORT} cache_from: - "${CENTOS_CACHE_FROM}" image: zabbix-snmptraps:${ZABBIX_CENTOS_IMAGE_TAG}${ZABBIX_LOCAL_IMAGE_TAG_POSTFIX} -# Override snmptrapd command arguments to receive SNMP traps by DNS -# It must be done with ZBX_SNMP_TRAP_USE_DNS=true environment variable -# command: /usr/sbin/snmptrapd -C -c /etc/snmp/snmptrapd.conf -Lo -A - profiles: - - full - - all - ports: - - "${ZABBIX_SNMPTRAPS_PORT}:1162/udp" - restart: "${RESTART_POLICY}" - volumes: - - snmptraps:/var/lib/zabbix/snmptraps:rw - deploy: - resources: - limits: - cpus: '0.5' - memory: 256M - reservations: - cpus: '0.25' - memory: 128M - env_file: - - ${ENV_VARS_DIRECTORY}/.env_snmptraps - networks: - zbx_net_frontend: - aliases: - - zabbix-snmptraps - zbx_net_backend: - stop_grace_period: 5s + depends_on: + - zabbix-build-mysql labels: - com.zabbix.description: "Zabbix snmptraps" - com.zabbix.company: "Zabbix LLC" - com.zabbix.component: "snmptraps" com.zabbix.os: "${CENTOS_OS_TAG}" mysql-server: - image: "${MYSQL_IMAGE}:${MYSQL_IMAGE_TAG}" - command: - - mysqld - - --character-set-server=utf8 - - --collation-server=utf8_bin - - --default-authentication-plugin=mysql_native_password -# - --require-secure-transport -# - --ssl-ca=/run/secrets/root-ca.pem -# - --ssl-cert=/run/secrets/server-cert.pem -# - --ssl-key=/run/secrets/server-key.pem - restart: "${RESTART_POLICY}" - volumes: - - ${DATA_DIRECTORY}/var/lib/mysql:/var/lib/mysql:rw -# - dbsocket:/var/run/mysqld/ - env_file: - - ${ENV_VARS_DIRECTORY}/.env_db_mysql - secrets: - - MYSQL_USER - - MYSQL_PASSWORD - - MYSQL_ROOT_PASSWORD -# - server-key.pem -# - server-cert.pem -# - root-ca.pem - stop_grace_period: 1m - networks: - zbx_net_backend: - aliases: - - mysql-server - - zabbix-database - - mysql-database + extends: + file: compose_databases.yaml + service: mysql-server - db_data_mysql: - image: busybox - volumes: - - ${DATA_DIRECTORY}/var/lib/mysql:/var/lib/mysql:rw + db-data-mysql: + extends: + file: compose_databases.yaml + service: db-data-mysql # elasticsearch: -# image: "${ELASTICSEARCH_IMAGE}:${ELASTICSEARCH_IMAGE_TAG}" -# restart: "${RESTART_POLICY}" -# profiles: -# - full -# - all -# environment: -# - transport.host=0.0.0.0 -# - discovery.zen.minimum_master_nodes=1 -# networks: -# zbx_net_backend: -# aliases: -# - elasticsearch +# extends: +# file: compose_databases.yaml +# service: elasticsearch networks: zbx_net_frontend: @@ -545,6 +207,13 @@ networks: driver: "${BACKEND_NETWORK_DRIVER}" config: - subnet: "${BACKEND_SUBNET}" + zbx_net_database: + driver: bridge + driver_opts: + com.docker.network.enable_ipv6: "${DATABASE_NETWORK_ENABLE_IPV6}" + internal: true + ipam: + driver: "${DATABASE_NETWORK_DRIVER}" volumes: snmptraps: diff --git a/docker-compose_v3_centos_pgsql_latest.yaml b/docker-compose_v3_centos_pgsql_latest.yaml index 1ca9f947e..fc63410f3 100644 --- a/docker-compose_v3_centos_pgsql_latest.yaml +++ b/docker-compose_v3_centos_pgsql_latest.yaml @@ -1,459 +1,113 @@ version: '3.8' services: zabbix-server: + extends: + file: compose_zabbix_components.yaml + service: zabbix-server-pgsql image: "${ZABBIX_SERVER_PGSQL_IMAGE}:${ZABBIX_CENTOS_IMAGE_TAG}${ZABBIX_IMAGE_TAG_POSTFIX}" - init: true - ports: - - "${ZABBIX_SERVER_PORT}:10051" - restart: "${RESTART_POLICY}" volumes: - - /etc/localtime:/etc/localtime:ro - /etc/timezone:/etc/timezone:ro - - ${DATA_DIRECTORY}/usr/lib/zabbix/alertscripts:/usr/lib/zabbix/alertscripts:ro - - ${DATA_DIRECTORY}/usr/lib/zabbix/externalscripts:/usr/lib/zabbix/externalscripts:ro - - ${DATA_DIRECTORY}/var/lib/zabbix/dbscripts:/var/lib/zabbix/dbscripts:ro - - ${DATA_DIRECTORY}/var/lib/zabbix/export:/var/lib/zabbix/export:rw - - ${DATA_DIRECTORY}/var/lib/zabbix/modules:/var/lib/zabbix/modules:ro - - ${DATA_DIRECTORY}/var/lib/zabbix/enc:/var/lib/zabbix/enc:ro - - ${DATA_DIRECTORY}/var/lib/zabbix/ssh_keys:/var/lib/zabbix/ssh_keys:ro - - ${DATA_DIRECTORY}/var/lib/zabbix/mibs:/var/lib/zabbix/mibs:ro - - snmptraps:/var/lib/zabbix/snmptraps:rw -# - ${ENV_VARS_DIRECTORY}/.ZBX_DB_CA_FILE:/run/secrets/root-ca.pem:ro -# - ${ENV_VARS_DIRECTORY}/.ZBX_DB_CERT_FILE:/run/secrets/client-cert.pem:ro -# - ${ENV_VARS_DIRECTORY}/.ZBX_DB_KEY_FILE:/run/secrets/client-key.pem:ro - 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_VARS_DIRECTORY}/.env_db_pgsql - - ${ENV_VARS_DIRECTORY}/.env_srv - secrets: - - POSTGRES_USER - - POSTGRES_PASSWORD depends_on: - postgres-server - networks: - zbx_net_backend: - aliases: - - zabbix-server - - zabbix-server-pgsql - zbx_net_frontend: -# devices: -# - "/dev/ttyUSB0:/dev/ttyUSB0" - stop_grace_period: 30s - sysctls: - - net.ipv4.ip_local_port_range=1024 64999 - - 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: "${CENTOS_OS_TAG}" zabbix-proxy-sqlite3: + extends: + file: compose_zabbix_components.yaml + service: zabbix-proxy-sqlite3 image: "${ZABBIX_PROXY_SQLITE3_IMAGE}:${ZABBIX_CENTOS_IMAGE_TAG}${ZABBIX_IMAGE_TAG_POSTFIX}" - init: true - profiles: - - all - ports: - - "${ZABBIX_PROXY_SQLITE3_PORT}:10051" - restart: "${RESTART_POLICY}" volumes: - - /etc/localtime:/etc/localtime:ro - /etc/timezone:/etc/timezone:ro - - ${DATA_DIRECTORY}/usr/lib/zabbix/externalscripts:/usr/lib/zabbix/externalscripts:ro - - ${DATA_DIRECTORY}/var/lib/zabbix/modules:/var/lib/zabbix/modules:ro - - ${DATA_DIRECTORY}/var/lib/zabbix/enc:/var/lib/zabbix/enc:ro - - ${DATA_DIRECTORY}/var/lib/zabbix/ssh_keys:/var/lib/zabbix/ssh_keys:ro - - ${DATA_DIRECTORY}/var/lib/zabbix/mibs:/var/lib/zabbix/mibs:ro - - snmptraps:/var/lib/zabbix/snmptraps:rw - ulimits: - nproc: 65535 - nofile: - soft: 20000 - hard: 40000 - deploy: - resources: - limits: - cpus: '0.70' - memory: 512M - reservations: - cpus: '0.3' - memory: 256M - env_file: - - ${ENV_VARS_DIRECTORY}/.env_prx - - ${ENV_VARS_DIRECTORY}/.env_prx_sqlite3 - depends_on: - - zabbix-java-gateway - - zabbix-snmptraps - networks: - zbx_net_backend: - aliases: - - zabbix-proxy-sqlite3 - zbx_net_frontend: - stop_grace_period: 30s labels: - com.zabbix.description: "Zabbix proxy with SQLite3 database support" - com.zabbix.company: "Zabbix LLC" - com.zabbix.component: "zabbix-proxy" - com.zabbix.dbtype: "sqlite3" com.zabbix.os: "${CENTOS_OS_TAG}" zabbix-proxy-mysql: + extends: + file: compose_zabbix_components.yaml + service: zabbix-proxy-mysql image: "${ZABBIX_PROXY_MYSQL_IMAGE}:${ZABBIX_CENTOS_IMAGE_TAG}${ZABBIX_IMAGE_TAG_POSTFIX}" - init: true - profiles: - - all - ports: - - "${ZABBIX_PROXY_MYSQL_PORT}:10051" - restart: "${RESTART_POLICY}" volumes: - - /etc/localtime:/etc/localtime:ro - /etc/timezone:/etc/timezone:ro - - ${DATA_DIRECTORY}/usr/lib/zabbix/externalscripts:/usr/lib/zabbix/externalscripts:ro - - ${DATA_DIRECTORY}/var/lib/zabbix/modules:/var/lib/zabbix/modules:ro - - ${DATA_DIRECTORY}/var/lib/zabbix/enc:/var/lib/zabbix/enc:ro - - ${DATA_DIRECTORY}/var/lib/zabbix/ssh_keys:/var/lib/zabbix/ssh_keys:ro - - ${DATA_DIRECTORY}/var/lib/zabbix/mibs:/var/lib/zabbix/mibs:ro - - snmptraps:/var/lib/zabbix/snmptraps:rw - ulimits: - nproc: 65535 - nofile: - soft: 20000 - hard: 40000 - deploy: - resources: - limits: - cpus: '0.70' - memory: 512M - reservations: - cpus: '0.3' - memory: 256M - env_file: - - ${ENV_VARS_DIRECTORY}/.env_db_mysql_proxy - - ${ENV_VARS_DIRECTORY}/.env_prx - - ${ENV_VARS_DIRECTORY}/.env_prx_mysql - secrets: - - MYSQL_USER - - MYSQL_PASSWORD - - MYSQL_ROOT_USER - - MYSQL_ROOT_PASSWORD depends_on: - mysql-server - - zabbix-java-gateway - - zabbix-snmptraps - networks: - zbx_net_backend: - aliases: - - zabbix-proxy-mysql - zbx_net_frontend: - stop_grace_period: 30s labels: - com.zabbix.description: "Zabbix proxy with MySQL database support" - com.zabbix.company: "Zabbix LLC" - com.zabbix.component: "zabbix-proxy" - com.zabbix.dbtype: "mysql" com.zabbix.os: "${CENTOS_OS_TAG}" zabbix-web-apache-pgsql: + extends: + file: compose_zabbix_components.yaml + service: zabbix-web-apache-pgsql image: "${ZABBIX_WEB_APACHE_PGSQL_IMAGE}:${ZABBIX_CENTOS_IMAGE_TAG}${ZABBIX_IMAGE_TAG_POSTFIX}" - profiles: - - all - ports: - - "${ZABBIX_WEB_APACHE_HTTP_PORT}:8080" - - "${ZABBIX_WEB_APACHE_HTTPS_PORT}:8443" - restart: "${RESTART_POLICY}" volumes: - - /etc/localtime:/etc/localtime:ro - /etc/timezone:/etc/timezone:ro - - ${DATA_DIRECTORY}/etc/ssl/apache2:/etc/ssl/apache2:ro - - ${DATA_DIRECTORY}/usr/share/zabbix/modules/:/usr/share/zabbix/modules/:ro -# - ${ENV_VARS_DIRECTORY}/.ZBX_DB_CA_FILE:/run/secrets/root-ca.pem:ro -# - ${ENV_VARS_DIRECTORY}/.ZBX_DB_CERT_FILE:/run/secrets/client-cert.pem:ro -# - ${ENV_VARS_DIRECTORY}/.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_VARS_DIRECTORY}/.env_db_pgsql - - ${ENV_VARS_DIRECTORY}/.env_web - secrets: - - POSTGRES_USER - - POSTGRES_PASSWORD depends_on: - postgres-server - - zabbix-server - healthcheck: - test: ["CMD", "curl", "-f", "http://localhost:8080/ping"] - interval: 10s - timeout: 5s - retries: 3 - start_period: 30s - networks: - zbx_net_backend: - aliases: - - zabbix-web-apache-pgsql - zbx_net_frontend: - stop_grace_period: 10s - sysctls: - - net.core.somaxconn=65535 labels: - com.zabbix.description: "Zabbix frontend on Apache web-server with PostgreSQL database support" - com.zabbix.company: "Zabbix LLC" - com.zabbix.component: "zabbix-frontend" - com.zabbix.webserver: "apache2" - com.zabbix.dbtype: "pgsql" com.zabbix.os: "${CENTOS_OS_TAG}" zabbix-web-nginx-pgsql: + extends: + file: compose_zabbix_components.yaml + service: zabbix-web-nginx-pgsql image: "${ZABBIX_WEB_NGINX_PGSQL_IMAGE}:${ZABBIX_CENTOS_IMAGE_TAG}${ZABBIX_IMAGE_TAG_POSTFIX}" - ports: - - "${ZABBIX_WEB_NGINX_HTTP_PORT}:8080" - - "${ZABBIX_WEB_NGINX_HTTPS_PORT}:8443" - restart: "${RESTART_POLICY}" volumes: - - /etc/localtime:/etc/localtime:ro - /etc/timezone:/etc/timezone:ro - - ${DATA_DIRECTORY}/etc/ssl/nginx:/etc/ssl/nginx:ro - - ${DATA_DIRECTORY}/usr/share/zabbix/modules/:/usr/share/zabbix/modules/:ro -# - ${ENV_VARS_DIRECTORY}/.ZBX_DB_CA_FILE:/run/secrets/root-ca.pem:ro -# - ${ENV_VARS_DIRECTORY}/.ZBX_DB_CERT_FILE:/run/secrets/client-cert.pem:ro -# - ${ENV_VARS_DIRECTORY}/.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_VARS_DIRECTORY}/.env_db_pgsql - - ${ENV_VARS_DIRECTORY}/.env_web - secrets: - - POSTGRES_USER - - POSTGRES_PASSWORD depends_on: - postgres-server - - zabbix-server - healthcheck: - test: ["CMD", "curl", "-f", "http://localhost:8080/ping"] - interval: 10s - timeout: 5s - retries: 3 - start_period: 30s - networks: - zbx_net_backend: - aliases: - - zabbix-web-nginx-pgsql - 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: "${CENTOS_OS_TAG}" zabbix-agent: + extends: + file: compose_zabbix_components.yaml + service: zabbix-agent image: "${ZABBIX_AGENT_IMAGE}:${ZABBIX_CENTOS_IMAGE_TAG}${ZABBIX_IMAGE_TAG_POSTFIX}" - init: true - profiles: - - full - - all - ports: - - "${ZABBIX_AGENT_PORT}:10050" - restart: "${RESTART_POLICY}" volumes: - - /etc/localtime:/etc/localtime:ro - /etc/timezone:/etc/timezone:ro - - ${DATA_DIRECTORY}/etc/zabbix/zabbix_agentd.d:/etc/zabbix/zabbix_agentd.d:ro - - ${DATA_DIRECTORY}/var/lib/zabbix/modules:/var/lib/zabbix/modules:ro - - ${DATA_DIRECTORY}/var/lib/zabbix/enc:/var/lib/zabbix/enc:ro - - ${DATA_DIRECTORY}/var/lib/zabbix/ssh_keys:/var/lib/zabbix/ssh_keys:ro - deploy: - resources: - limits: - cpus: '0.2' - memory: 128M - reservations: - cpus: '0.1' - memory: 64M - mode: global - env_file: - - ${ENV_VARS_DIRECTORY}/.env_agent - privileged: true - pid: "host" - networks: - zbx_net_backend: - aliases: - - zabbix-agent - - zabbix-agent-passive - stop_grace_period: 5s labels: - com.zabbix.description: "Zabbix agent" - com.zabbix.company: "Zabbix LLC" - com.zabbix.component: "zabbix-agentd" com.zabbix.os: "${CENTOS_OS_TAG}" zabbix-java-gateway: + extends: + file: compose_zabbix_components.yaml + service: zabbix-java-gateway image: "${ZABBIX_JAVA_GATEWAY_IMAGE}:${ZABBIX_CENTOS_IMAGE_TAG}${ZABBIX_IMAGE_TAG_POSTFIX}" - profiles: - - full - - all - ports: - - "${ZABBIX_JAVA_GATEWAY_PORT}:10052" - restart: "${RESTART_POLICY}" - deploy: - resources: - limits: - cpus: '0.5' - memory: 512M - reservations: - cpus: '0.25' - memory: 256M - env_file: - - ${ENV_VARS_DIRECTORY}/.env_java - networks: - zbx_net_backend: - aliases: - - zabbix-java-gateway - stop_grace_period: 5s labels: - com.zabbix.description: "Zabbix Java Gateway" - com.zabbix.company: "Zabbix LLC" - com.zabbix.component: "java-gateway" com.zabbix.os: "${CENTOS_OS_TAG}" zabbix-snmptraps: + extends: + file: compose_zabbix_components.yaml + service: zabbix-snmptraps image: "${ZABBIX_SNMPTRAPS_IMAGE}:${ZABBIX_CENTOS_IMAGE_TAG}${ZABBIX_IMAGE_TAG_POSTFIX}" -# Override snmptrapd command arguments to receive SNMP traps by DNS -# It must be done with ZBX_SNMP_TRAP_USE_DNS=true environment variable -# command: /usr/sbin/snmptrapd -C -c /etc/snmp/snmptrapd.conf -Lo -A - profiles: - - full - - all - ports: - - "${ZABBIX_SNMPTRAPS_PORT}:1162/udp" - restart: "${RESTART_POLICY}" - volumes: - - snmptraps:/var/lib/zabbix/snmptraps:rw - deploy: - resources: - limits: - cpus: '0.5' - memory: 256M - reservations: - cpus: '0.25' - memory: 128M - env_file: - - ${ENV_VARS_DIRECTORY}/.env_snmptraps - networks: - zbx_net_frontend: - aliases: - - zabbix-snmptraps - zbx_net_backend: - stop_grace_period: 5s labels: - com.zabbix.description: "Zabbix snmptraps" - com.zabbix.company: "Zabbix LLC" - com.zabbix.component: "snmptraps" com.zabbix.os: "${CENTOS_OS_TAG}" mysql-server: - image: "${MYSQL_IMAGE}:${MYSQL_IMAGE_TAG}" - profiles: - - all - command: - - mysqld - - --character-set-server=utf8 - - --collation-server=utf8_bin - - --default-authentication-plugin=mysql_native_password - restart: "${RESTART_POLICY}" - volumes: - - ${DATA_DIRECTORY}/var/lib/mysql:/var/lib/mysql:rw - env_file: - - ${ENV_VARS_DIRECTORY}/.env_db_mysql - secrets: - - MYSQL_USER - - MYSQL_PASSWORD - - MYSQL_ROOT_PASSWORD - stop_grace_period: 1m - networks: - zbx_net_backend: - aliases: - - mysql-server - - zabbix-database - - mysql-database + extends: + file: compose_databases.yaml + service: mysql-server postgres-server: - image: "${POSTGRESQL_IMAGE}:${POSTGRESQL_IMAGE_TAG}" -# 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 - restart: "${RESTART_POLICY}" - volumes: - - ${DATA_DIRECTORY}/var/lib/postgresql/data:/var/lib/postgresql/data:rw - - ${ENV_VARS_DIRECTORY}/.ZBX_DB_CA_FILE:/run/secrets/root-ca.pem:ro - - ${ENV_VARS_DIRECTORY}/.ZBX_DB_CERT_FILE:/run/secrets/server-cert.pem:ro - - ${ENV_VARS_DIRECTORY}/.ZBX_DB_KEY_FILE:/run/secrets/server-key.pem:ro - env_file: - - ${ENV_VARS_DIRECTORY}/.env_db_pgsql - secrets: - - POSTGRES_USER - - POSTGRES_PASSWORD - stop_grace_period: 1m - networks: - zbx_net_backend: - aliases: - - postgres-server - - pgsql-server - - pgsql-database + extends: + file: compose_databases.yaml + service: postgres-server - db_data_mysql: - image: busybox - profiles: - - all - volumes: - - ${DATA_DIRECTORY}/var/lib/mysql:/var/lib/mysql:rw + db-data-mysql: + extends: + file: compose_databases.yaml + service: db-data-mysql - db_data_pgsql: - image: busybox - volumes: - - ${DATA_DIRECTORY}/var/lib/postgresql/data:/var/lib/postgresql/data:rw + db-data-pgsql: + extends: + file: compose_databases.yaml + service: db-data-pgsql # elasticsearch: -# image: "${ELASTICSEARCH_IMAGE}:${ELASTICSEARCH_IMAGE_TAG}" -# restart: "${RESTART_POLICY}" -# profiles: -# - full -# - all -# environment: -# - transport.host=0.0.0.0 -# - discovery.zen.minimum_master_nodes=1 -# networks: -# zbx_net_backend: -# aliases: -# - elasticsearch +# extends: +# file: compose_databases.yaml +# service: elasticsearch networks: zbx_net_frontend: @@ -473,9 +127,17 @@ networks: driver: "${BACKEND_NETWORK_DRIVER}" config: - subnet: "${BACKEND_SUBNET}" + zbx_net_database: + driver: bridge + driver_opts: + com.docker.network.enable_ipv6: "${DATABASE_NETWORK_ENABLE_IPV6}" + internal: true + ipam: + driver: "${DATABASE_NETWORK_DRIVER}" volumes: snmptraps: +# dbsocket: secrets: MYSQL_USER: diff --git a/docker-compose_v3_centos_pgsql_local.yaml b/docker-compose_v3_centos_pgsql_local.yaml index ed664d99e..7cafc45f2 100644 --- a/docker-compose_v3_centos_pgsql_local.yaml +++ b/docker-compose_v3_centos_pgsql_local.yaml @@ -45,6 +45,9 @@ services: - zabbix-build-base zabbix-server: + extends: + file: compose_zabbix_components.yaml + service: zabbix-server-pgsql build: context: ./Dockerfiles/server-pgsql/${CENTOS_OS_TAG_SHORT} cache_from: @@ -52,69 +55,18 @@ services: args: BUILD_BASE_IMAGE: ${BUILD_BASE_PGSQL_IMAGE}:${ZABBIX_CENTOS_IMAGE_TAG}${ZABBIX_LOCAL_IMAGE_TAG_POSTFIX} image: zabbix-server-pgsql:${ZABBIX_CENTOS_IMAGE_TAG}${ZABBIX_LOCAL_IMAGE_TAG_POSTFIX} - init: true - ports: - - "${ZABBIX_SERVER_PORT}:10051" - restart: "${RESTART_POLICY}" volumes: - - /etc/localtime:/etc/localtime:ro - /etc/timezone:/etc/timezone:ro - - ${DATA_DIRECTORY}/usr/lib/zabbix/alertscripts:/usr/lib/zabbix/alertscripts:ro - - ${DATA_DIRECTORY}/usr/lib/zabbix/externalscripts:/usr/lib/zabbix/externalscripts:ro - - ${DATA_DIRECTORY}/var/lib/zabbix/dbscripts:/var/lib/zabbix/dbscripts:ro - - ${DATA_DIRECTORY}/var/lib/zabbix/export:/var/lib/zabbix/export:rw - - ${DATA_DIRECTORY}/var/lib/zabbix/modules:/var/lib/zabbix/modules:ro - - ${DATA_DIRECTORY}/var/lib/zabbix/enc:/var/lib/zabbix/enc:ro - - ${DATA_DIRECTORY}/var/lib/zabbix/ssh_keys:/var/lib/zabbix/ssh_keys:ro - - ${DATA_DIRECTORY}/var/lib/zabbix/mibs:/var/lib/zabbix/mibs:ro - - snmptraps:/var/lib/zabbix/snmptraps:rw -# - ${ENV_VARS_DIRECTORY}/.ZBX_DB_CA_FILE:/run/secrets/root-ca.pem:ro -# - ${ENV_VARS_DIRECTORY}/.ZBX_DB_CERT_FILE:/run/secrets/client-cert.pem:ro -# - ${ENV_VARS_DIRECTORY}/.ZBX_DB_KEY_FILE:/run/secrets/client-key.pem:ro - 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_VARS_DIRECTORY}/.env_db_pgsql - - ${ENV_VARS_DIRECTORY}/.env_srv - secrets: - - POSTGRES_USER - - POSTGRES_PASSWORD depends_on: - postgres-server - zabbix-build-pgsql - networks: - zbx_net_backend: - aliases: - - zabbix-server - - zabbix-server-pgsql - zbx_net_frontend: -# devices: -# - "/dev/ttyUSB0:/dev/ttyUSB0" - stop_grace_period: 30s - sysctls: - - net.ipv4.ip_local_port_range=1024 64999 - - 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: "${CENTOS_OS_TAG}" zabbix-proxy-sqlite3: + extends: + file: compose_zabbix_components.yaml + service: zabbix-proxy-sqlite3 build: context: ./Dockerfiles/proxy-sqlite3/${CENTOS_OS_TAG_SHORT} cache_from: @@ -122,55 +74,17 @@ services: args: BUILD_BASE_IMAGE: ${BUILD_BASE_SQLITE3_IMAGE}:${ZABBIX_CENTOS_IMAGE_TAG}${ZABBIX_LOCAL_IMAGE_TAG_POSTFIX} image: zabbix-proxy-sqlite3:${ZABBIX_CENTOS_IMAGE_TAG}${ZABBIX_LOCAL_IMAGE_TAG_POSTFIX} - init: true - profiles: - - all - ports: - - "${ZABBIX_PROXY_SQLITE3_PORT}:10051" - restart: "${RESTART_POLICY}" volumes: - - /etc/localtime:/etc/localtime:ro - /etc/timezone:/etc/timezone:ro - - ${DATA_DIRECTORY}/usr/lib/zabbix/externalscripts:/usr/lib/zabbix/externalscripts:ro - - ${DATA_DIRECTORY}/var/lib/zabbix/modules:/var/lib/zabbix/modules:ro - - ${DATA_DIRECTORY}/var/lib/zabbix/enc:/var/lib/zabbix/enc:ro - - ${DATA_DIRECTORY}/var/lib/zabbix/ssh_keys:/var/lib/zabbix/ssh_keys:ro - - ${DATA_DIRECTORY}/var/lib/zabbix/mibs:/var/lib/zabbix/mibs:ro - - snmptraps:/var/lib/zabbix/snmptraps:rw - ulimits: - nproc: 65535 - nofile: - soft: 20000 - hard: 40000 - deploy: - resources: - limits: - cpus: '0.70' - memory: 512M - reservations: - cpus: '0.3' - memory: 256M - env_file: - - ${ENV_VARS_DIRECTORY}/.env_prx - - ${ENV_VARS_DIRECTORY}/.env_prx_sqlite3 depends_on: - - zabbix-java-gateway - - zabbix-snmptraps - zabbix-build-sqlite3 - networks: - zbx_net_backend: - aliases: - - zabbix-proxy-sqlite3 - zbx_net_frontend: - stop_grace_period: 30s labels: - com.zabbix.description: "Zabbix proxy with SQLite3 database support" - com.zabbix.company: "Zabbix LLC" - com.zabbix.component: "zabbix-proxy" - com.zabbix.dbtype: "sqlite3" com.zabbix.os: "${CENTOS_OS_TAG}" zabbix-proxy-mysql: + extends: + file: compose_zabbix_components.yaml + service: zabbix-proxy-mysql build: context: ./Dockerfiles/proxy-mysql/${CENTOS_OS_TAG_SHORT} cache_from: @@ -178,62 +92,18 @@ services: args: BUILD_BASE_IMAGE: ${BUILD_BASE_MYSQL_IMAGE}:${ZABBIX_CENTOS_IMAGE_TAG}${ZABBIX_LOCAL_IMAGE_TAG_POSTFIX} image: zabbix-proxy-mysql:${ZABBIX_CENTOS_IMAGE_TAG}${ZABBIX_LOCAL_IMAGE_TAG_POSTFIX} - init: true - profiles: - - all - ports: - - "${ZABBIX_PROXY_MYSQL_PORT}:10051" - restart: "${RESTART_POLICY}" volumes: - - /etc/localtime:/etc/localtime:ro - /etc/timezone:/etc/timezone:ro - - ${DATA_DIRECTORY}/usr/lib/zabbix/externalscripts:/usr/lib/zabbix/externalscripts:ro - - ${DATA_DIRECTORY}/var/lib/zabbix/modules:/var/lib/zabbix/modules:ro - - ${DATA_DIRECTORY}/var/lib/zabbix/enc:/var/lib/zabbix/enc:ro - - ${DATA_DIRECTORY}/var/lib/zabbix/ssh_keys:/var/lib/zabbix/ssh_keys:ro - - ${DATA_DIRECTORY}/var/lib/zabbix/mibs:/var/lib/zabbix/mibs:ro - - snmptraps:/var/lib/zabbix/snmptraps:rw - ulimits: - nproc: 65535 - nofile: - soft: 20000 - hard: 40000 - deploy: - resources: - limits: - cpus: '0.70' - memory: 512M - reservations: - cpus: '0.3' - memory: 256M - env_file: - - ${ENV_VARS_DIRECTORY}/.env_db_mysql_proxy - - ${ENV_VARS_DIRECTORY}/.env_prx - - ${ENV_VARS_DIRECTORY}/.env_prx_mysql - secrets: - - MYSQL_USER - - MYSQL_PASSWORD - - MYSQL_ROOT_USER - - MYSQL_ROOT_PASSWORD depends_on: - mysql-server - - zabbix-java-gateway - - zabbix-snmptraps - zabbix-build-mysql - networks: - zbx_net_backend: - aliases: - - zabbix-proxy-mysql - zbx_net_frontend: - stop_grace_period: 30s labels: - com.zabbix.description: "Zabbix proxy with MySQL database support" - com.zabbix.company: "Zabbix LLC" - com.zabbix.component: "zabbix-proxy" - com.zabbix.dbtype: "mysql" com.zabbix.os: "${CENTOS_OS_TAG}" zabbix-web-apache-pgsql: + extends: + file: compose_zabbix_components.yaml + service: zabbix-web-apache-pgsql build: context: ./Dockerfiles/web-apache-pgsql/${CENTOS_OS_TAG_SHORT} cache_from: @@ -241,61 +111,18 @@ services: args: BUILD_BASE_IMAGE: ${BUILD_BASE_PGSQL_IMAGE}:${ZABBIX_CENTOS_IMAGE_TAG}${ZABBIX_LOCAL_IMAGE_TAG_POSTFIX} image: zabbix-web-apache-pgsql:${ZABBIX_CENTOS_IMAGE_TAG}${ZABBIX_LOCAL_IMAGE_TAG_POSTFIX} - profiles: - - all - ports: - - "${ZABBIX_WEB_APACHE_HTTP_PORT}:8080" - - "${ZABBIX_WEB_APACHE_HTTPS_PORT}:8443" - restart: "${RESTART_POLICY}" volumes: - - /etc/localtime:/etc/localtime:ro - /etc/timezone:/etc/timezone:ro - - ${DATA_DIRECTORY}/etc/ssl/apache2:/etc/ssl/apache2:ro - - ${DATA_DIRECTORY}/usr/share/zabbix/modules/:/usr/share/zabbix/modules/:ro -# - ${ENV_VARS_DIRECTORY}/.ZBX_DB_CA_FILE:/run/secrets/root-ca.pem:ro -# - ${ENV_VARS_DIRECTORY}/.ZBX_DB_CERT_FILE:/run/secrets/client-cert.pem:ro -# - ${ENV_VARS_DIRECTORY}/.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_VARS_DIRECTORY}/.env_db_pgsql - - ${ENV_VARS_DIRECTORY}/.env_web - secrets: - - POSTGRES_USER - - POSTGRES_PASSWORD depends_on: - postgres-server - - zabbix-server - zabbix-build-pgsql - healthcheck: - test: ["CMD", "curl", "-f", "http://localhost:8080/ping"] - interval: 10s - timeout: 5s - retries: 3 - start_period: 30s - networks: - zbx_net_backend: - aliases: - - zabbix-web-apache-pgsql - zbx_net_frontend: - stop_grace_period: 10s - sysctls: - - net.core.somaxconn=65535 labels: - com.zabbix.description: "Zabbix frontend on Apache web-server with PostgreSQL database support" - com.zabbix.company: "Zabbix LLC" - com.zabbix.component: "zabbix-frontend" - com.zabbix.webserver: "apache2" - com.zabbix.dbtype: "pgsql" com.zabbix.os: "${CENTOS_OS_TAG}" zabbix-web-nginx-pgsql: + extends: + file: compose_zabbix_components.yaml + service: zabbix-web-nginx-pgsql build: context: ./Dockerfiles/web-nginx-pgsql/${CENTOS_OS_TAG_SHORT} cache_from: @@ -303,256 +130,86 @@ services: args: BUILD_BASE_IMAGE: ${BUILD_BASE_PGSQL_IMAGE}:${ZABBIX_CENTOS_IMAGE_TAG}${ZABBIX_LOCAL_IMAGE_TAG_POSTFIX} image: zabbix-web-nginx-pgsql:${ZABBIX_CENTOS_IMAGE_TAG}${ZABBIX_LOCAL_IMAGE_TAG_POSTFIX} - ports: - - "${ZABBIX_WEB_NGINX_HTTP_PORT}:8080" - - "${ZABBIX_WEB_NGINX_HTTPS_PORT}:8443" - restart: "${RESTART_POLICY}" volumes: - - /etc/localtime:/etc/localtime:ro - /etc/timezone:/etc/timezone:ro - - ${DATA_DIRECTORY}/etc/ssl/nginx:/etc/ssl/nginx:ro - - ${DATA_DIRECTORY}/usr/share/zabbix/modules/:/usr/share/zabbix/modules/:ro -# - ${ENV_VARS_DIRECTORY}/.ZBX_DB_CA_FILE:/run/secrets/root-ca.pem:ro -# - ${ENV_VARS_DIRECTORY}/.ZBX_DB_CERT_FILE:/run/secrets/client-cert.pem:ro -# - ${ENV_VARS_DIRECTORY}/.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_VARS_DIRECTORY}/.env_db_pgsql - - ${ENV_VARS_DIRECTORY}/.env_web - secrets: - - POSTGRES_USER - - POSTGRES_PASSWORD depends_on: - postgres-server - - zabbix-server - zabbix-build-pgsql - healthcheck: - test: ["CMD", "curl", "-f", "http://localhost:8080/ping"] - interval: 10s - timeout: 5s - retries: 3 - start_period: 30s - networks: - zbx_net_backend: - aliases: - - zabbix-web-nginx-pgsql - 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: "${CENTOS_OS_TAG}" zabbix-agent: + extends: + file: compose_zabbix_components.yaml + service: zabbix-agent build: context: ./Dockerfiles/agent/${CENTOS_OS_TAG_SHORT} cache_from: - "${CENTOS_CACHE_FROM}" args: - BUILD_BASE_IMAGE: ${BUILD_BASE_PGSQL_IMAGE}:${ZABBIX_CENTOS_IMAGE_TAG}${ZABBIX_LOCAL_IMAGE_TAG_POSTFIX} + BUILD_BASE_IMAGE: ${BUILD_BASE_MYSQL_IMAGE}:${ZABBIX_CENTOS_IMAGE_TAG}${ZABBIX_LOCAL_IMAGE_TAG_POSTFIX} image: zabbix-agent:${ZABBIX_CENTOS_IMAGE_TAG}${ZABBIX_LOCAL_IMAGE_TAG_POSTFIX} - init: true - profiles: - - full - - all - ports: - - "${ZABBIX_AGENT_PORT}:10050" - restart: "${RESTART_POLICY}" volumes: - - /etc/localtime:/etc/localtime:ro - /etc/timezone:/etc/timezone:ro - - ${DATA_DIRECTORY}/etc/zabbix/zabbix_agentd.d:/etc/zabbix/zabbix_agentd.d:ro - - ${DATA_DIRECTORY}/var/lib/zabbix/modules:/var/lib/zabbix/modules:ro - - ${DATA_DIRECTORY}/var/lib/zabbix/enc:/var/lib/zabbix/enc:ro - - ${DATA_DIRECTORY}/var/lib/zabbix/ssh_keys:/var/lib/zabbix/ssh_keys:ro - deploy: - resources: - limits: - cpus: '0.2' - memory: 128M - reservations: - cpus: '0.1' - memory: 64M - mode: global - env_file: - - ${ENV_VARS_DIRECTORY}/.env_agent - privileged: true - pid: "host" depends_on: - zabbix-build-pgsql - networks: - zbx_net_backend: - aliases: - - zabbix-agent - - zabbix-agent-passive - stop_grace_period: 5s labels: - com.zabbix.description: "Zabbix agent" - com.zabbix.company: "Zabbix LLC" - com.zabbix.component: "zabbix-agentd" com.zabbix.os: "${CENTOS_OS_TAG}" zabbix-java-gateway: + extends: + file: compose_zabbix_components.yaml + service: zabbix-java-gateway build: context: ./Dockerfiles/java-gateway/${CENTOS_OS_TAG_SHORT} cache_from: - "${CENTOS_CACHE_FROM}" args: - BUILD_BASE_IMAGE: ${BUILD_BASE_PGSQL_IMAGE}:${ZABBIX_CENTOS_IMAGE_TAG}${ZABBIX_LOCAL_IMAGE_TAG_POSTFIX} + BUILD_BASE_IMAGE: ${BUILD_BASE_MYSQL_IMAGE}:${ZABBIX_CENTOS_IMAGE_TAG}${ZABBIX_LOCAL_IMAGE_TAG_POSTFIX} image: zabbix-java-gateway:${ZABBIX_CENTOS_IMAGE_TAG}${ZABBIX_LOCAL_IMAGE_TAG_POSTFIX} - profiles: - - full - - all - ports: - - "${ZABBIX_JAVA_GATEWAY_PORT}:10052" - restart: "${RESTART_POLICY}" - deploy: - resources: - limits: - cpus: '0.5' - memory: 512M - reservations: - cpus: '0.25' - memory: 256M - env_file: - - ${ENV_VARS_DIRECTORY}/.env_java depends_on: - zabbix-build-pgsql - networks: - zbx_net_backend: - aliases: - - zabbix-java-gateway - stop_grace_period: 5s labels: - com.zabbix.description: "Zabbix Java Gateway" - com.zabbix.company: "Zabbix LLC" - com.zabbix.component: "java-gateway" com.zabbix.os: "${CENTOS_OS_TAG}" zabbix-snmptraps: + extends: + file: compose_zabbix_components.yaml + service: zabbix-snmptraps build: context: ./Dockerfiles/snmptraps/${CENTOS_OS_TAG_SHORT} cache_from: - "${CENTOS_CACHE_FROM}" image: zabbix-snmptraps:${ZABBIX_CENTOS_IMAGE_TAG}${ZABBIX_LOCAL_IMAGE_TAG_POSTFIX} -# Override snmptrapd command arguments to receive SNMP traps by DNS -# It must be done with ZBX_SNMP_TRAP_USE_DNS=true environment variable -# command: /usr/sbin/snmptrapd -C -c /etc/snmp/snmptrapd.conf -Lo -A - profiles: - - full - - all - ports: - - "${ZABBIX_SNMPTRAPS_PORT}:1162/udp" - restart: "${RESTART_POLICY}" - volumes: - - snmptraps:/var/lib/zabbix/snmptraps:rw - deploy: - resources: - limits: - cpus: '0.5' - memory: 256M - reservations: - cpus: '0.25' - memory: 128M - env_file: - - ${ENV_VARS_DIRECTORY}/.env_snmptraps - networks: - zbx_net_frontend: - aliases: - - zabbix-snmptraps - zbx_net_backend: - stop_grace_period: 5s + depends_on: + - zabbix-build-pgsql labels: - com.zabbix.description: "Zabbix snmptraps" - com.zabbix.company: "Zabbix LLC" - com.zabbix.component: "snmptraps" com.zabbix.os: "${CENTOS_OS_TAG}" mysql-server: - image: "${MYSQL_IMAGE}:${MYSQL_IMAGE_TAG}" - profiles: - - all - command: - - mysqld - - --character-set-server=utf8 - - --collation-server=utf8_bin - - --default-authentication-plugin=mysql_native_password - restart: "${RESTART_POLICY}" - volumes: - - ${DATA_DIRECTORY}/var/lib/mysql:/var/lib/mysql:rw - env_file: - - ${ENV_VARS_DIRECTORY}/.env_db_mysql - secrets: - - MYSQL_USER - - MYSQL_PASSWORD - - MYSQL_ROOT_PASSWORD - stop_grace_period: 1m - networks: - zbx_net_backend: - aliases: - - mysql-server - - zabbix-database - - mysql-database + extends: + file: compose_databases.yaml + service: mysql-server postgres-server: - image: "${POSTGRESQL_IMAGE}:${POSTGRESQL_IMAGE_TAG}" -# 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 - restart: "${RESTART_POLICY}" - volumes: - - ${DATA_DIRECTORY}/var/lib/postgresql/data:/var/lib/postgresql/data:rw - - ${ENV_VARS_DIRECTORY}/.ZBX_DB_CA_FILE:/run/secrets/root-ca.pem:ro - - ${ENV_VARS_DIRECTORY}/.ZBX_DB_CERT_FILE:/run/secrets/server-cert.pem:ro - - ${ENV_VARS_DIRECTORY}/.ZBX_DB_KEY_FILE:/run/secrets/server-key.pem:ro - env_file: - - ${ENV_VARS_DIRECTORY}/.env_db_pgsql - secrets: - - POSTGRES_USER - - POSTGRES_PASSWORD - stop_grace_period: 1m - networks: - zbx_net_backend: - aliases: - - postgres-server - - pgsql-server - - pgsql-database + extends: + file: compose_databases.yaml + service: postgres-server - db_data_mysql: - image: busybox - profiles: - - all - volumes: - - ${DATA_DIRECTORY}/var/lib/mysql:/var/lib/mysql:rw + db-data-mysql: + extends: + file: compose_databases.yaml + service: db-data-mysql - db_data_pgsql: - image: busybox - volumes: - - ${DATA_DIRECTORY}/var/lib/postgresql/data:/var/lib/postgresql/data:rw + db-data-pgsql: + extends: + file: compose_databases.yaml + service: db-data-pgsql # elasticsearch: -# image: "${ELASTICSEARCH_IMAGE}:${ELASTICSEARCH_IMAGE_TAG}" -# restart: "${RESTART_POLICY}" -# profiles: -# - full -# - all -# environment: -# - transport.host=0.0.0.0 -# - discovery.zen.minimum_master_nodes=1 -# networks: -# zbx_net_backend: -# aliases: -# - elasticsearch +# extends: +# file: compose_databases.yaml +# service: elasticsearch networks: zbx_net_frontend: @@ -572,9 +229,17 @@ networks: driver: "${BACKEND_NETWORK_DRIVER}" config: - subnet: "${BACKEND_SUBNET}" + zbx_net_database: + driver: bridge + driver_opts: + com.docker.network.enable_ipv6: "${DATABASE_NETWORK_ENABLE_IPV6}" + internal: true + ipam: + driver: "${DATABASE_NETWORK_DRIVER}" volumes: snmptraps: +# dbsocket: secrets: MYSQL_USER: diff --git a/docker-compose_v3_ol_mysql_latest.yaml b/docker-compose_v3_ol_mysql_latest.yaml index f41735a91..e8402d3f4 100644 --- a/docker-compose_v3_ol_mysql_latest.yaml +++ b/docker-compose_v3_ol_mysql_latest.yaml @@ -1,445 +1,103 @@ version: '3.8' services: zabbix-server: + extends: + file: compose_zabbix_components.yaml + service: zabbix-server-mysql image: "${ZABBIX_SERVER_MYSQL_IMAGE}:${ZABBIX_OL_IMAGE_TAG}${ZABBIX_IMAGE_TAG_POSTFIX}" - init: true - ports: - - "${ZABBIX_SERVER_PORT}:10051" - restart: "${RESTART_POLICY}" volumes: - - /etc/localtime:/etc/localtime:ro - /etc/timezone:/etc/timezone:ro -# - dbsocket:/var/run/mysqld/ - - ${DATA_DIRECTORY}/usr/lib/zabbix/alertscripts:/usr/lib/zabbix/alertscripts:ro - - ${DATA_DIRECTORY}/usr/lib/zabbix/externalscripts:/usr/lib/zabbix/externalscripts:ro - - ${DATA_DIRECTORY}/var/lib/zabbix/dbscripts:/var/lib/zabbix/dbscripts:ro - - ${DATA_DIRECTORY}/var/lib/zabbix/export:/var/lib/zabbix/export:rw - - ${DATA_DIRECTORY}/var/lib/zabbix/modules:/var/lib/zabbix/modules:ro - - ${DATA_DIRECTORY}/var/lib/zabbix/enc:/var/lib/zabbix/enc:ro - - ${DATA_DIRECTORY}/var/lib/zabbix/ssh_keys:/var/lib/zabbix/ssh_keys:ro - - ${DATA_DIRECTORY}/var/lib/zabbix/mibs:/var/lib/zabbix/mibs:ro - - snmptraps:/var/lib/zabbix/snmptraps:rw - 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_VARS_DIRECTORY}/.env_db_mysql - - ${ENV_VARS_DIRECTORY}/.env_srv - secrets: - - MYSQL_USER - - MYSQL_PASSWORD - - MYSQL_ROOT_USER - - MYSQL_ROOT_PASSWORD -# - client-key.pem -# - client-cert.pem -# - root-ca.pem depends_on: - mysql-server - networks: - zbx_net_backend: - aliases: - - zabbix-server - - zabbix-server-mysql - zbx_net_frontend: -# devices: -# - "/dev/ttyUSB0:/dev/ttyUSB0" - stop_grace_period: 30s - sysctls: - - net.ipv4.ip_local_port_range=1024 64999 - - 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 MySQL database support" - com.zabbix.company: "Zabbix LLC" - com.zabbix.component: "zabbix-server" - com.zabbix.dbtype: "mysql" com.zabbix.os: "${OL_OS_TAG}" zabbix-proxy-sqlite3: + extends: + file: compose_zabbix_components.yaml + service: zabbix-proxy-sqlite3 image: "${ZABBIX_PROXY_SQLITE3_IMAGE}:${ZABBIX_OL_IMAGE_TAG}${ZABBIX_IMAGE_TAG_POSTFIX}" - init: true - profiles: - - all - ports: - - "${ZABBIX_PROXY_SQLITE3_PORT}:10051" - restart: "${RESTART_POLICY}" volumes: - - /etc/localtime:/etc/localtime:ro - /etc/timezone:/etc/timezone:ro - - ${DATA_DIRECTORY}/usr/lib/zabbix/externalscripts:/usr/lib/zabbix/externalscripts:ro - - ${DATA_DIRECTORY}/var/lib/zabbix/modules:/var/lib/zabbix/modules:ro - - ${DATA_DIRECTORY}/var/lib/zabbix/enc:/var/lib/zabbix/enc:ro - - ${DATA_DIRECTORY}/var/lib/zabbix/ssh_keys:/var/lib/zabbix/ssh_keys:ro - - ${DATA_DIRECTORY}/var/lib/zabbix/mibs:/var/lib/zabbix/mibs:ro - - snmptraps:/var/lib/zabbix/snmptraps:rw - ulimits: - nproc: 65535 - nofile: - soft: 20000 - hard: 40000 - deploy: - resources: - limits: - cpus: '0.70' - memory: 512M - reservations: - cpus: '0.3' - memory: 256M - env_file: - - ${ENV_VARS_DIRECTORY}/.env_prx - - ${ENV_VARS_DIRECTORY}/.env_prx_sqlite3 - depends_on: - - zabbix-java-gateway - - zabbix-snmptraps - networks: - zbx_net_backend: - aliases: - - zabbix-proxy-sqlite3 - zbx_net_frontend: - stop_grace_period: 30s labels: - com.zabbix.description: "Zabbix proxy with SQLite3 database support" - com.zabbix.company: "Zabbix LLC" - com.zabbix.component: "zabbix-proxy" - com.zabbix.dbtype: "sqlite3" com.zabbix.os: "${OL_OS_TAG}" zabbix-proxy-mysql: + extends: + file: compose_zabbix_components.yaml + service: zabbix-proxy-mysql image: "${ZABBIX_PROXY_MYSQL_IMAGE}:${ZABBIX_OL_IMAGE_TAG}${ZABBIX_IMAGE_TAG_POSTFIX}" - init: true - profiles: - - all - ports: - - "${ZABBIX_PROXY_MYSQL_PORT}:10051" - restart: "${RESTART_POLICY}" volumes: - - /etc/localtime:/etc/localtime:ro - /etc/timezone:/etc/timezone:ro -# - dbsocket:/var/run/mysqld/ - - ${DATA_DIRECTORY}/usr/lib/zabbix/externalscripts:/usr/lib/zabbix/externalscripts:ro - - ${DATA_DIRECTORY}/var/lib/zabbix/modules:/var/lib/zabbix/modules:ro - - ${DATA_DIRECTORY}/var/lib/zabbix/enc:/var/lib/zabbix/enc:ro - - ${DATA_DIRECTORY}/var/lib/zabbix/ssh_keys:/var/lib/zabbix/ssh_keys:ro - - ${DATA_DIRECTORY}/var/lib/zabbix/mibs:/var/lib/zabbix/mibs:ro - - snmptraps:/var/lib/zabbix/snmptraps:rw - ulimits: - nproc: 65535 - nofile: - soft: 20000 - hard: 40000 - deploy: - resources: - limits: - cpus: '0.70' - memory: 512M - reservations: - cpus: '0.3' - memory: 256M - env_file: - - ${ENV_VARS_DIRECTORY}/.env_db_mysql_proxy - - ${ENV_VARS_DIRECTORY}/.env_prx - - ${ENV_VARS_DIRECTORY}/.env_prx_mysql depends_on: - mysql-server - - zabbix-java-gateway - - zabbix-snmptraps - secrets: - - MYSQL_USER - - MYSQL_PASSWORD - - MYSQL_ROOT_USER - - MYSQL_ROOT_PASSWORD -# - client-key.pem -# - client-cert.pem -# - root-ca.pem - networks: - zbx_net_backend: - aliases: - - zabbix-proxy-mysql - zbx_net_frontend: - stop_grace_period: 30s labels: - com.zabbix.description: "Zabbix proxy with MySQL database support" - com.zabbix.company: "Zabbix LLC" - com.zabbix.component: "zabbix-proxy" - com.zabbix.dbtype: "mysql" com.zabbix.os: "${OL_OS_TAG}" zabbix-web-apache-mysql: + extends: + file: compose_zabbix_components.yaml + service: zabbix-web-apache-mysql image: "${ZABBIX_WEB_APACHE_MYSQL_IMAGE}:${ZABBIX_OL_IMAGE_TAG}${ZABBIX_IMAGE_TAG_POSTFIX}" - profiles: - - all - ports: - - "${ZABBIX_WEB_APACHE_HTTP_PORT}:8080" - - "${ZABBIX_WEB_APACHE_HTTPS_PORT}:8443" - restart: "${RESTART_POLICY}" volumes: - - /etc/localtime:/etc/localtime:ro - /etc/timezone:/etc/timezone:ro -# - dbsocket:/var/run/mysqld/ - - ${DATA_DIRECTORY}/etc/ssl/apache2:/etc/ssl/apache2:ro - - ${DATA_DIRECTORY}/usr/share/zabbix/modules/:/usr/share/zabbix/modules/:ro - deploy: - resources: - limits: - cpus: '0.70' - memory: 512M - reservations: - cpus: '0.5' - memory: 256M - env_file: - - ${ENV_VARS_DIRECTORY}/.env_db_mysql - - ${ENV_VARS_DIRECTORY}/.env_web - secrets: - - MYSQL_USER - - MYSQL_PASSWORD -# - client-key.pem -# - client-cert.pem -# - root-ca.pem depends_on: - mysql-server - - zabbix-server - healthcheck: - test: ["CMD", "curl", "-f", "http://localhost:8080/ping"] - interval: 10s - timeout: 5s - retries: 3 - start_period: 30s - networks: - zbx_net_backend: - aliases: - - zabbix-web-apache-mysql - zbx_net_frontend: - stop_grace_period: 10s - sysctls: - - net.core.somaxconn=65535 labels: - com.zabbix.description: "Zabbix frontend on Apache web-server with MySQL database support" - com.zabbix.company: "Zabbix LLC" - com.zabbix.component: "zabbix-frontend" - com.zabbix.webserver: "apache2" - com.zabbix.dbtype: "mysql" com.zabbix.os: "${OL_OS_TAG}" zabbix-web-nginx-mysql: + extends: + file: compose_zabbix_components.yaml + service: zabbix-web-nginx-mysql image: "${ZABBIX_WEB_NGINX_MYSQL_IMAGE}:${ZABBIX_OL_IMAGE_TAG}${ZABBIX_IMAGE_TAG_POSTFIX}" - ports: - - "${ZABBIX_WEB_NGINX_HTTP_PORT}:8080" - - "${ZABBIX_WEB_NGINX_HTTPS_PORT}:8443" - restart: "${RESTART_POLICY}" volumes: - - /etc/localtime:/etc/localtime:ro - /etc/timezone:/etc/timezone:ro -# - dbsocket:/var/run/mysqld/ - - ${DATA_DIRECTORY}/etc/ssl/nginx:/etc/ssl/nginx:ro - - ${DATA_DIRECTORY}/usr/share/zabbix/modules/:/usr/share/zabbix/modules/:ro - deploy: - resources: - limits: - cpus: '0.70' - memory: 512M - reservations: - cpus: '0.5' - memory: 256M - env_file: - - ${ENV_VARS_DIRECTORY}/.env_db_mysql - - ${ENV_VARS_DIRECTORY}/.env_web - secrets: - - MYSQL_USER - - MYSQL_PASSWORD -# - client-key.pem -# - client-cert.pem -# - root-ca.pem depends_on: - mysql-server - - zabbix-server - healthcheck: - test: ["CMD", "curl", "-f", "http://localhost:8080/ping"] - interval: 10s - timeout: 5s - retries: 3 - start_period: 30s - networks: - zbx_net_backend: - aliases: - - zabbix-web-nginx-mysql - zbx_net_frontend: - stop_grace_period: 10s - sysctls: - - net.core.somaxconn=65535 labels: - com.zabbix.description: "Zabbix frontend on Nginx web-server with MySQL database support" - com.zabbix.company: "Zabbix LLC" - com.zabbix.component: "zabbix-frontend" - com.zabbix.webserver: "nginx" - com.zabbix.dbtype: "mysql" com.zabbix.os: "${OL_OS_TAG}" zabbix-agent: + extends: + file: compose_zabbix_components.yaml + service: zabbix-agent image: "${ZABBIX_AGENT_IMAGE}:${ZABBIX_OL_IMAGE_TAG}${ZABBIX_IMAGE_TAG_POSTFIX}" - init: true - profiles: - - full - - all - ports: - - "${ZABBIX_AGENT_PORT}:10050" - restart: "${RESTART_POLICY}" volumes: - - /etc/localtime:/etc/localtime:ro - /etc/timezone:/etc/timezone:ro - - ${DATA_DIRECTORY}/etc/zabbix/zabbix_agentd.d:/etc/zabbix/zabbix_agentd.d:ro - - ${DATA_DIRECTORY}/var/lib/zabbix/modules:/var/lib/zabbix/modules:ro - - ${DATA_DIRECTORY}/var/lib/zabbix/enc:/var/lib/zabbix/enc:ro - - ${DATA_DIRECTORY}/var/lib/zabbix/ssh_keys:/var/lib/zabbix/ssh_keys:ro - deploy: - resources: - limits: - cpus: '0.2' - memory: 128M - reservations: - cpus: '0.1' - memory: 64M - mode: global - env_file: - - ${ENV_VARS_DIRECTORY}/.env_agent - privileged: true - pid: "host" - networks: - zbx_net_backend: - aliases: - - zabbix-agent - - zabbix-agent-passive - stop_grace_period: 5s labels: - com.zabbix.description: "Zabbix agent" - com.zabbix.company: "Zabbix LLC" - com.zabbix.component: "zabbix-agentd" com.zabbix.os: "${OL_OS_TAG}" zabbix-java-gateway: + extends: + file: compose_zabbix_components.yaml + service: zabbix-java-gateway image: "${ZABBIX_JAVA_GATEWAY_IMAGE}:${ZABBIX_OL_IMAGE_TAG}${ZABBIX_IMAGE_TAG_POSTFIX}" - profiles: - - full - - all - ports: - - "${ZABBIX_JAVA_GATEWAY_PORT}:10052" - restart: "${RESTART_POLICY}" - deploy: - resources: - limits: - cpus: '0.5' - memory: 512M - reservations: - cpus: '0.25' - memory: 256M - env_file: - - ${ENV_VARS_DIRECTORY}/.env_java - networks: - zbx_net_backend: - aliases: - - zabbix-java-gateway - stop_grace_period: 5s labels: - com.zabbix.description: "Zabbix Java Gateway" - com.zabbix.company: "Zabbix LLC" - com.zabbix.component: "java-gateway" com.zabbix.os: "${OL_OS_TAG}" zabbix-snmptraps: + extends: + file: compose_zabbix_components.yaml + service: zabbix-snmptraps image: "${ZABBIX_SNMPTRAPS_IMAGE}:${ZABBIX_OL_IMAGE_TAG}${ZABBIX_IMAGE_TAG_POSTFIX}" -# Override snmptrapd command arguments to receive SNMP traps by DNS -# It must be done with ZBX_SNMP_TRAP_USE_DNS=true environment variable -# command: /usr/sbin/snmptrapd -C -c /etc/snmp/snmptrapd.conf -Lo -A - profiles: - - full - - all - ports: - - "${ZABBIX_SNMPTRAPS_PORT}:1162/udp" - restart: "${RESTART_POLICY}" - volumes: - - snmptraps:/var/lib/zabbix/snmptraps:rw - deploy: - resources: - limits: - cpus: '0.5' - memory: 256M - reservations: - cpus: '0.25' - memory: 128M - env_file: - - ${ENV_VARS_DIRECTORY}/.env_snmptraps - networks: - zbx_net_frontend: - aliases: - - zabbix-snmptraps - zbx_net_backend: - stop_grace_period: 5s labels: - com.zabbix.description: "Zabbix snmptraps" - com.zabbix.company: "Zabbix LLC" - com.zabbix.component: "snmptraps" com.zabbix.os: "${OL_OS_TAG}" mysql-server: - image: "${MYSQL_IMAGE}:${MYSQL_IMAGE_TAG}" - command: - - mysqld - - --character-set-server=utf8 - - --collation-server=utf8_bin - - --default-authentication-plugin=mysql_native_password -# - --require-secure-transport -# - --ssl-ca=/run/secrets/root-ca.pem -# - --ssl-cert=/run/secrets/server-cert.pem -# - --ssl-key=/run/secrets/server-key.pem - restart: "${RESTART_POLICY}" - volumes: - - ${DATA_DIRECTORY}/var/lib/mysql:/var/lib/mysql:rw -# - dbsocket:/var/run/mysqld/ - env_file: - - ${ENV_VARS_DIRECTORY}/.env_db_mysql - secrets: - - MYSQL_USER - - MYSQL_PASSWORD - - MYSQL_ROOT_PASSWORD -# - server-key.pem -# - server-cert.pem -# - root-ca.pem - stop_grace_period: 1m - networks: - zbx_net_backend: - aliases: - - mysql-server - - zabbix-database - - mysql-database + extends: + file: compose_databases.yaml + service: mysql-server - db_data_mysql: - image: busybox - volumes: - - ${DATA_DIRECTORY}/var/lib/mysql:/var/lib/mysql:rw + db-data-mysql: + extends: + file: compose_databases.yaml + service: db-data-mysql # elasticsearch: -# image: "${ELASTICSEARCH_IMAGE}:${ELASTICSEARCH_IMAGE_TAG}" -# restart: "${RESTART_POLICY}" -# profiles: -# - full -# - all -# environment: -# - transport.host=0.0.0.0 -# - discovery.zen.minimum_master_nodes=1 -# networks: -# zbx_net_backend: -# aliases: -# - elasticsearch +# extends: +# file: compose_databases.yaml +# service: elasticsearch networks: zbx_net_frontend: @@ -459,6 +117,13 @@ networks: driver: "${BACKEND_NETWORK_DRIVER}" config: - subnet: "${BACKEND_SUBNET}" + zbx_net_database: + driver: bridge + driver_opts: + com.docker.network.enable_ipv6: "${DATABASE_NETWORK_ENABLE_IPV6}" + internal: true + ipam: + driver: "${DATABASE_NETWORK_DRIVER}" volumes: snmptraps: diff --git a/docker-compose_v3_ol_mysql_local.yaml b/docker-compose_v3_ol_mysql_local.yaml index 94068829d..f89146c9b 100644 --- a/docker-compose_v3_ol_mysql_local.yaml +++ b/docker-compose_v3_ol_mysql_local.yaml @@ -32,6 +32,9 @@ services: - zabbix-build-base zabbix-server: + extends: + file: compose_zabbix_components.yaml + service: zabbix-server-mysql build: context: ./Dockerfiles/server-mysql/${OL_OS_TAG_SHORT} cache_from: @@ -39,72 +42,19 @@ services: args: BUILD_BASE_IMAGE: ${BUILD_BASE_MYSQL_IMAGE}:${ZABBIX_OL_IMAGE_TAG}${ZABBIX_LOCAL_IMAGE_TAG_POSTFIX} image: zabbix-server-mysql:${ZABBIX_OL_IMAGE_TAG}${ZABBIX_LOCAL_IMAGE_TAG_POSTFIX} - init: true - ports: - - "${ZABBIX_SERVER_PORT}:10051" - restart: "${RESTART_POLICY}" volumes: - - /etc/localtime:/etc/localtime:ro - /etc/timezone:/etc/timezone:ro -# - dbsocket:/var/run/mysqld/ - - ${DATA_DIRECTORY}/usr/lib/zabbix/alertscripts:/usr/lib/zabbix/alertscripts:ro - - ${DATA_DIRECTORY}/usr/lib/zabbix/externalscripts:/usr/lib/zabbix/externalscripts:ro - - ${DATA_DIRECTORY}/var/lib/zabbix/dbscripts:/var/lib/zabbix/dbscripts:ro - - ${DATA_DIRECTORY}/var/lib/zabbix/export:/var/lib/zabbix/export:rw - - ${DATA_DIRECTORY}/var/lib/zabbix/modules:/var/lib/zabbix/modules:ro - - ${DATA_DIRECTORY}/var/lib/zabbix/enc:/var/lib/zabbix/enc:ro - - ${DATA_DIRECTORY}/var/lib/zabbix/ssh_keys:/var/lib/zabbix/ssh_keys:ro - - ${DATA_DIRECTORY}/var/lib/zabbix/mibs:/var/lib/zabbix/mibs:ro - - snmptraps:/var/lib/zabbix/snmptraps:rw - 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_VARS_DIRECTORY}/.env_db_mysql - - ${ENV_VARS_DIRECTORY}/.env_srv - secrets: - - MYSQL_USER - - MYSQL_PASSWORD - - MYSQL_ROOT_USER - - MYSQL_ROOT_PASSWORD -# - client-key.pem -# - client-cert.pem -# - root-ca.pem depends_on: - mysql-server - zabbix-build-mysql - networks: - zbx_net_backend: - aliases: - - zabbix-server - - zabbix-server-mysql - zbx_net_frontend: -# devices: -# - "/dev/ttyUSB0:/dev/ttyUSB0" - stop_grace_period: 30s - sysctls: - - net.ipv4.ip_local_port_range=1024 64999 - - 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 MySQL database support" - com.zabbix.company: "Zabbix LLC" - com.zabbix.component: "zabbix-server" - com.zabbix.dbtype: "mysql" com.zabbix.os: "${OL_OS_TAG}" zabbix-proxy-sqlite3: + extends: + file: compose_zabbix_components.yaml + service: zabbix-proxy-sqlite3 build: context: ./Dockerfiles/proxy-sqlite3/${OL_OS_TAG_SHORT} cache_from: @@ -112,55 +62,17 @@ services: args: BUILD_BASE_IMAGE: ${BUILD_BASE_SQLITE3_IMAGE}:${ZABBIX_OL_IMAGE_TAG}${ZABBIX_LOCAL_IMAGE_TAG_POSTFIX} image: zabbix-proxy-sqlite3:${ZABBIX_OL_IMAGE_TAG}${ZABBIX_LOCAL_IMAGE_TAG_POSTFIX} - init: true - profiles: - - all - ports: - - "${ZABBIX_PROXY_SQLITE3_PORT}:10051" - restart: "${RESTART_POLICY}" volumes: - - /etc/localtime:/etc/localtime:ro - /etc/timezone:/etc/timezone:ro - - ${DATA_DIRECTORY}/usr/lib/zabbix/externalscripts:/usr/lib/zabbix/externalscripts:ro - - ${DATA_DIRECTORY}/var/lib/zabbix/modules:/var/lib/zabbix/modules:ro - - ${DATA_DIRECTORY}/var/lib/zabbix/enc:/var/lib/zabbix/enc:ro - - ${DATA_DIRECTORY}/var/lib/zabbix/ssh_keys:/var/lib/zabbix/ssh_keys:ro - - ${DATA_DIRECTORY}/var/lib/zabbix/mibs:/var/lib/zabbix/mibs:ro - - snmptraps:/var/lib/zabbix/snmptraps:rw - ulimits: - nproc: 65535 - nofile: - soft: 20000 - hard: 40000 - deploy: - resources: - limits: - cpus: '0.70' - memory: 512M - reservations: - cpus: '0.3' - memory: 256M - env_file: - - ${ENV_VARS_DIRECTORY}/.env_prx - - ${ENV_VARS_DIRECTORY}/.env_prx_sqlite3 depends_on: - - zabbix-java-gateway - - zabbix-snmptraps - zabbix-build-sqlite3 - networks: - zbx_net_backend: - aliases: - - zabbix-proxy-sqlite3 - zbx_net_frontend: - stop_grace_period: 30s labels: - com.zabbix.description: "Zabbix proxy with SQLite3 database support" - com.zabbix.company: "Zabbix LLC" - com.zabbix.component: "zabbix-proxy" - com.zabbix.dbtype: "sqlite3" com.zabbix.os: "${OL_OS_TAG}" zabbix-proxy-mysql: + extends: + file: compose_zabbix_components.yaml + service: zabbix-proxy-mysql build: context: ./Dockerfiles/proxy-mysql/${OL_OS_TAG_SHORT} cache_from: @@ -168,66 +80,18 @@ services: args: BUILD_BASE_IMAGE: ${BUILD_BASE_MYSQL_IMAGE}:${ZABBIX_OL_IMAGE_TAG}${ZABBIX_LOCAL_IMAGE_TAG_POSTFIX} image: zabbix-proxy-mysql:${ZABBIX_OL_IMAGE_TAG}${ZABBIX_LOCAL_IMAGE_TAG_POSTFIX} - init: true - profiles: - - all - ports: - - "${ZABBIX_PROXY_MYSQL_PORT}:10051" - restart: "${RESTART_POLICY}" volumes: - - /etc/localtime:/etc/localtime:ro - /etc/timezone:/etc/timezone:ro -# - dbsocket:/var/run/mysqld/ - - ${DATA_DIRECTORY}/usr/lib/zabbix/externalscripts:/usr/lib/zabbix/externalscripts:ro - - ${DATA_DIRECTORY}/var/lib/zabbix/modules:/var/lib/zabbix/modules:ro - - ${DATA_DIRECTORY}/var/lib/zabbix/enc:/var/lib/zabbix/enc:ro - - ${DATA_DIRECTORY}/var/lib/zabbix/ssh_keys:/var/lib/zabbix/ssh_keys:ro - - ${DATA_DIRECTORY}/var/lib/zabbix/mibs:/var/lib/zabbix/mibs:ro - - snmptraps:/var/lib/zabbix/snmptraps:rw - ulimits: - nproc: 65535 - nofile: - soft: 20000 - hard: 40000 - deploy: - resources: - limits: - cpus: '0.70' - memory: 512M - reservations: - cpus: '0.3' - memory: 256M - env_file: - - ${ENV_VARS_DIRECTORY}/.env_db_mysql_proxy - - ${ENV_VARS_DIRECTORY}/.env_prx - - ${ENV_VARS_DIRECTORY}/.env_prx_mysql depends_on: - mysql-server - - zabbix-java-gateway - - zabbix-snmptraps - zabbix-build-mysql - secrets: - - MYSQL_USER - - MYSQL_PASSWORD - - MYSQL_ROOT_USER - - MYSQL_ROOT_PASSWORD -# - client-key.pem -# - client-cert.pem -# - root-ca.pem - networks: - zbx_net_backend: - aliases: - - zabbix-proxy-mysql - zbx_net_frontend: - stop_grace_period: 30s labels: - com.zabbix.description: "Zabbix proxy with MySQL database support" - com.zabbix.company: "Zabbix LLC" - com.zabbix.component: "zabbix-proxy" - com.zabbix.dbtype: "mysql" com.zabbix.os: "${OL_OS_TAG}" zabbix-web-apache-mysql: + extends: + file: compose_zabbix_components.yaml + service: zabbix-web-apache-mysql build: context: ./Dockerfiles/web-apache-mysql/${OL_OS_TAG_SHORT} cache_from: @@ -235,62 +99,18 @@ services: args: BUILD_BASE_IMAGE: ${BUILD_BASE_MYSQL_IMAGE}:${ZABBIX_OL_IMAGE_TAG}${ZABBIX_LOCAL_IMAGE_TAG_POSTFIX} image: zabbix-web-apache-mysql:${ZABBIX_OL_IMAGE_TAG}${ZABBIX_LOCAL_IMAGE_TAG_POSTFIX} - profiles: - - all - ports: - - "${ZABBIX_WEB_APACHE_HTTP_PORT}:8080" - - "${ZABBIX_WEB_APACHE_HTTPS_PORT}:8443" - restart: "${RESTART_POLICY}" volumes: - - /etc/localtime:/etc/localtime:ro - /etc/timezone:/etc/timezone:ro -# - dbsocket:/var/run/mysqld/ - - ${DATA_DIRECTORY}/etc/ssl/apache2:/etc/ssl/apache2:ro - - ${DATA_DIRECTORY}/usr/share/zabbix/modules/:/usr/share/zabbix/modules/:ro - deploy: - resources: - limits: - cpus: '0.70' - memory: 512M - reservations: - cpus: '0.5' - memory: 256M - env_file: - - ${ENV_VARS_DIRECTORY}/.env_db_mysql - - ${ENV_VARS_DIRECTORY}/.env_web - secrets: - - MYSQL_USER - - MYSQL_PASSWORD -# - client-key.pem -# - client-cert.pem -# - root-ca.pem depends_on: - mysql-server - - zabbix-server - zabbix-build-mysql - healthcheck: - test: ["CMD", "curl", "-f", "http://localhost:8080/ping"] - interval: 10s - timeout: 5s - retries: 3 - start_period: 30s - networks: - zbx_net_backend: - aliases: - - zabbix-web-apache-mysql - zbx_net_frontend: - stop_grace_period: 10s - sysctls: - - net.core.somaxconn=65535 labels: - com.zabbix.description: "Zabbix frontend on Apache web-server with MySQL database support" - com.zabbix.company: "Zabbix LLC" - com.zabbix.component: "zabbix-frontend" - com.zabbix.webserver: "apache2" - com.zabbix.dbtype: "mysql" com.zabbix.os: "${OL_OS_TAG}" zabbix-web-nginx-mysql: + extends: + file: compose_zabbix_components.yaml + service: zabbix-web-nginx-mysql build: context: ./Dockerfiles/web-nginx-mysql/${OL_OS_TAG_SHORT} cache_from: @@ -298,60 +118,18 @@ services: args: BUILD_BASE_IMAGE: ${BUILD_BASE_MYSQL_IMAGE}:${ZABBIX_OL_IMAGE_TAG}${ZABBIX_LOCAL_IMAGE_TAG_POSTFIX} image: zabbix-web-nginx-mysql:${ZABBIX_OL_IMAGE_TAG}${ZABBIX_LOCAL_IMAGE_TAG_POSTFIX} - ports: - - "${ZABBIX_WEB_NGINX_HTTP_PORT}:8080" - - "${ZABBIX_WEB_NGINX_HTTPS_PORT}:8443" - restart: "${RESTART_POLICY}" volumes: - - /etc/localtime:/etc/localtime:ro - /etc/timezone:/etc/timezone:ro -# - dbsocket:/var/run/mysqld/ - - ${DATA_DIRECTORY}/etc/ssl/nginx:/etc/ssl/nginx:ro - - ${DATA_DIRECTORY}/usr/share/zabbix/modules/:/usr/share/zabbix/modules/:ro - deploy: - resources: - limits: - cpus: '0.70' - memory: 512M - reservations: - cpus: '0.5' - memory: 256M - env_file: - - ${ENV_VARS_DIRECTORY}/.env_db_mysql - - ${ENV_VARS_DIRECTORY}/.env_web - secrets: - - MYSQL_USER - - MYSQL_PASSWORD -# - client-key.pem -# - client-cert.pem -# - root-ca.pem depends_on: - mysql-server - - zabbix-server - zabbix-build-mysql - healthcheck: - test: ["CMD", "curl", "-f", "http://localhost:8080/ping"] - interval: 10s - timeout: 5s - retries: 3 - start_period: 30s - networks: - zbx_net_backend: - aliases: - - zabbix-web-nginx-mysql - zbx_net_frontend: - stop_grace_period: 10s - sysctls: - - net.core.somaxconn=65535 labels: - com.zabbix.description: "Zabbix frontend on Nginx web-server with MySQL database support" - com.zabbix.company: "Zabbix LLC" - com.zabbix.component: "zabbix-frontend" - com.zabbix.webserver: "nginx" - com.zabbix.dbtype: "mysql" com.zabbix.os: "${OL_OS_TAG}" zabbix-agent: + extends: + file: compose_zabbix_components.yaml + service: zabbix-agent build: context: ./Dockerfiles/agent/${OL_OS_TAG_SHORT} cache_from: @@ -359,48 +137,17 @@ services: args: BUILD_BASE_IMAGE: ${BUILD_BASE_MYSQL_IMAGE}:${ZABBIX_OL_IMAGE_TAG}${ZABBIX_LOCAL_IMAGE_TAG_POSTFIX} image: zabbix-agent:${ZABBIX_OL_IMAGE_TAG}${ZABBIX_LOCAL_IMAGE_TAG_POSTFIX} - init: true - profiles: - - full - - all - ports: - - "${ZABBIX_AGENT_PORT}:10050" - restart: "${RESTART_POLICY}" volumes: - - /etc/localtime:/etc/localtime:ro - /etc/timezone:/etc/timezone:ro - - ${DATA_DIRECTORY}/etc/zabbix/zabbix_agentd.d:/etc/zabbix/zabbix_agentd.d:ro - - ${DATA_DIRECTORY}/var/lib/zabbix/modules:/var/lib/zabbix/modules:ro - - ${DATA_DIRECTORY}/var/lib/zabbix/enc:/var/lib/zabbix/enc:ro - - ${DATA_DIRECTORY}/var/lib/zabbix/ssh_keys:/var/lib/zabbix/ssh_keys:ro - deploy: - resources: - limits: - cpus: '0.2' - memory: 128M - reservations: - cpus: '0.1' - memory: 64M - mode: global - env_file: - - ${ENV_VARS_DIRECTORY}/.env_agent - privileged: true - pid: "host" depends_on: - zabbix-build-mysql - networks: - zbx_net_backend: - aliases: - - zabbix-agent - - zabbix-agent-passive - stop_grace_period: 5s labels: - com.zabbix.description: "Zabbix agent" - com.zabbix.company: "Zabbix LLC" - com.zabbix.component: "zabbix-agentd" com.zabbix.os: "${OL_OS_TAG}" zabbix-java-gateway: + extends: + file: compose_zabbix_components.yaml + service: zabbix-java-gateway build: context: ./Dockerfiles/java-gateway/${OL_OS_TAG_SHORT} cache_from: @@ -408,124 +155,39 @@ services: args: BUILD_BASE_IMAGE: ${BUILD_BASE_MYSQL_IMAGE}:${ZABBIX_OL_IMAGE_TAG}${ZABBIX_LOCAL_IMAGE_TAG_POSTFIX} image: zabbix-java-gateway:${ZABBIX_OL_IMAGE_TAG}${ZABBIX_LOCAL_IMAGE_TAG_POSTFIX} - profiles: - - full - - all - ports: - - "${ZABBIX_JAVA_GATEWAY_PORT}:10052" - restart: "${RESTART_POLICY}" - deploy: - resources: - limits: - cpus: '0.5' - memory: 512M - reservations: - cpus: '0.25' - memory: 256M - env_file: - - ${ENV_VARS_DIRECTORY}/.env_java depends_on: - zabbix-build-mysql - networks: - zbx_net_backend: - aliases: - - zabbix-java-gateway - stop_grace_period: 5s labels: - com.zabbix.description: "Zabbix Java Gateway" - com.zabbix.company: "Zabbix LLC" - com.zabbix.component: "java-gateway" com.zabbix.os: "${OL_OS_TAG}" zabbix-snmptraps: + extends: + file: compose_zabbix_components.yaml + service: zabbix-snmptraps build: context: ./Dockerfiles/snmptraps/${OL_OS_TAG_SHORT} cache_from: - "${OL_CACHE_FROM}" image: zabbix-snmptraps:${ZABBIX_OL_IMAGE_TAG}${ZABBIX_LOCAL_IMAGE_TAG_POSTFIX} -# Override snmptrapd command arguments to receive SNMP traps by DNS -# It must be done with ZBX_SNMP_TRAP_USE_DNS=true environment variable -# command: /usr/sbin/snmptrapd -C -c /etc/snmp/snmptrapd.conf -Lo -A - profiles: - - full - - all - ports: - - "${ZABBIX_SNMPTRAPS_PORT}:1162/udp" - restart: "${RESTART_POLICY}" - volumes: - - snmptraps:/var/lib/zabbix/snmptraps:rw - deploy: - resources: - limits: - cpus: '0.5' - memory: 256M - reservations: - cpus: '0.25' - memory: 128M - env_file: - - ${ENV_VARS_DIRECTORY}/.env_snmptraps - networks: - zbx_net_frontend: - aliases: - - zabbix-snmptraps - zbx_net_backend: - stop_grace_period: 5s + depends_on: + - zabbix-build-mysql labels: - com.zabbix.description: "Zabbix snmptraps" - com.zabbix.company: "Zabbix LLC" - com.zabbix.component: "snmptraps" com.zabbix.os: "${OL_OS_TAG}" mysql-server: - image: "${MYSQL_IMAGE}:${MYSQL_IMAGE_TAG}" - command: - - mysqld - - --character-set-server=utf8 - - --collation-server=utf8_bin - - --default-authentication-plugin=mysql_native_password -# - --require-secure-transport -# - --ssl-ca=/run/secrets/root-ca.pem -# - --ssl-cert=/run/secrets/server-cert.pem -# - --ssl-key=/run/secrets/server-key.pem - restart: "${RESTART_POLICY}" - volumes: - - ${DATA_DIRECTORY}/var/lib/mysql:/var/lib/mysql:rw -# - dbsocket:/var/run/mysqld/ - env_file: - - ${ENV_VARS_DIRECTORY}/.env_db_mysql - secrets: - - MYSQL_USER - - MYSQL_PASSWORD - - MYSQL_ROOT_PASSWORD -# - server-key.pem -# - server-cert.pem -# - root-ca.pem - stop_grace_period: 1m - networks: - zbx_net_backend: - aliases: - - mysql-server - - zabbix-database - - mysql-database + extends: + file: compose_databases.yaml + service: mysql-server - db_data_mysql: - image: busybox - volumes: - - ${DATA_DIRECTORY}/var/lib/mysql:/var/lib/mysql:rw + db-data-mysql: + extends: + file: compose_databases.yaml + service: db-data-mysql # elasticsearch: -# image: "${ELASTICSEARCH_IMAGE}:${ELASTICSEARCH_IMAGE_TAG}" -# restart: "${RESTART_POLICY}" -# profiles: -# - full -# - all -# environment: -# - transport.host=0.0.0.0 -# - discovery.zen.minimum_master_nodes=1 -# networks: -# zbx_net_backend: -# aliases: -# - elasticsearch +# extends: +# file: compose_databases.yaml +# service: elasticsearch networks: zbx_net_frontend: @@ -545,6 +207,13 @@ networks: driver: "${BACKEND_NETWORK_DRIVER}" config: - subnet: "${BACKEND_SUBNET}" + zbx_net_database: + driver: bridge + driver_opts: + com.docker.network.enable_ipv6: "${DATABASE_NETWORK_ENABLE_IPV6}" + internal: true + ipam: + driver: "${DATABASE_NETWORK_DRIVER}" volumes: snmptraps: diff --git a/docker-compose_v3_ol_pgsql_latest.yaml b/docker-compose_v3_ol_pgsql_latest.yaml index 76ce462ae..c943aa70c 100644 --- a/docker-compose_v3_ol_pgsql_latest.yaml +++ b/docker-compose_v3_ol_pgsql_latest.yaml @@ -1,459 +1,113 @@ version: '3.8' services: zabbix-server: + extends: + file: compose_zabbix_components.yaml + service: zabbix-server-pgsql image: "${ZABBIX_SERVER_PGSQL_IMAGE}:${ZABBIX_OL_IMAGE_TAG}${ZABBIX_IMAGE_TAG_POSTFIX}" - init: true - ports: - - "${ZABBIX_SERVER_PORT}:10051" - restart: "${RESTART_POLICY}" volumes: - - /etc/localtime:/etc/localtime:ro - /etc/timezone:/etc/timezone:ro - - ${DATA_DIRECTORY}/usr/lib/zabbix/alertscripts:/usr/lib/zabbix/alertscripts:ro - - ${DATA_DIRECTORY}/usr/lib/zabbix/externalscripts:/usr/lib/zabbix/externalscripts:ro - - ${DATA_DIRECTORY}/var/lib/zabbix/dbscripts:/var/lib/zabbix/dbscripts:ro - - ${DATA_DIRECTORY}/var/lib/zabbix/export:/var/lib/zabbix/export:rw - - ${DATA_DIRECTORY}/var/lib/zabbix/modules:/var/lib/zabbix/modules:ro - - ${DATA_DIRECTORY}/var/lib/zabbix/enc:/var/lib/zabbix/enc:ro - - ${DATA_DIRECTORY}/var/lib/zabbix/ssh_keys:/var/lib/zabbix/ssh_keys:ro - - ${DATA_DIRECTORY}/var/lib/zabbix/mibs:/var/lib/zabbix/mibs:ro - - snmptraps:/var/lib/zabbix/snmptraps:rw -# - ${ENV_VARS_DIRECTORY}/.ZBX_DB_CA_FILE:/run/secrets/root-ca.pem:ro -# - ${ENV_VARS_DIRECTORY}/.ZBX_DB_CERT_FILE:/run/secrets/client-cert.pem:ro -# - ${ENV_VARS_DIRECTORY}/.ZBX_DB_KEY_FILE:/run/secrets/client-key.pem:ro - 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_VARS_DIRECTORY}/.env_db_pgsql - - ${ENV_VARS_DIRECTORY}/.env_srv - secrets: - - POSTGRES_USER - - POSTGRES_PASSWORD depends_on: - postgres-server - networks: - zbx_net_backend: - aliases: - - zabbix-server - - zabbix-server-pgsql - zbx_net_frontend: -# devices: -# - "/dev/ttyUSB0:/dev/ttyUSB0" - stop_grace_period: 30s - sysctls: - - net.ipv4.ip_local_port_range=1024 64999 - - 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: "${OL_OS_TAG}" zabbix-proxy-sqlite3: + extends: + file: compose_zabbix_components.yaml + service: zabbix-proxy-sqlite3 image: "${ZABBIX_PROXY_SQLITE3_IMAGE}:${ZABBIX_OL_IMAGE_TAG}${ZABBIX_IMAGE_TAG_POSTFIX}" - init: true - profiles: - - all - ports: - - "${ZABBIX_PROXY_SQLITE3_PORT}:10051" - restart: "${RESTART_POLICY}" volumes: - - /etc/localtime:/etc/localtime:ro - /etc/timezone:/etc/timezone:ro - - ${DATA_DIRECTORY}/usr/lib/zabbix/externalscripts:/usr/lib/zabbix/externalscripts:ro - - ${DATA_DIRECTORY}/var/lib/zabbix/modules:/var/lib/zabbix/modules:ro - - ${DATA_DIRECTORY}/var/lib/zabbix/enc:/var/lib/zabbix/enc:ro - - ${DATA_DIRECTORY}/var/lib/zabbix/ssh_keys:/var/lib/zabbix/ssh_keys:ro - - ${DATA_DIRECTORY}/var/lib/zabbix/mibs:/var/lib/zabbix/mibs:ro - - snmptraps:/var/lib/zabbix/snmptraps:rw - ulimits: - nproc: 65535 - nofile: - soft: 20000 - hard: 40000 - deploy: - resources: - limits: - cpus: '0.70' - memory: 512M - reservations: - cpus: '0.3' - memory: 256M - env_file: - - ${ENV_VARS_DIRECTORY}/.env_prx - - ${ENV_VARS_DIRECTORY}/.env_prx_sqlite3 - depends_on: - - zabbix-java-gateway - - zabbix-snmptraps - networks: - zbx_net_backend: - aliases: - - zabbix-proxy-sqlite3 - zbx_net_frontend: - stop_grace_period: 30s labels: - com.zabbix.description: "Zabbix proxy with SQLite3 database support" - com.zabbix.company: "Zabbix LLC" - com.zabbix.component: "zabbix-proxy" - com.zabbix.dbtype: "sqlite3" com.zabbix.os: "${OL_OS_TAG}" zabbix-proxy-mysql: + extends: + file: compose_zabbix_components.yaml + service: zabbix-proxy-mysql image: "${ZABBIX_PROXY_MYSQL_IMAGE}:${ZABBIX_OL_IMAGE_TAG}${ZABBIX_IMAGE_TAG_POSTFIX}" - init: true - profiles: - - all - ports: - - "${ZABBIX_PROXY_MYSQL_PORT}:10051" - restart: "${RESTART_POLICY}" volumes: - - /etc/localtime:/etc/localtime:ro - /etc/timezone:/etc/timezone:ro - - ${DATA_DIRECTORY}/usr/lib/zabbix/externalscripts:/usr/lib/zabbix/externalscripts:ro - - ${DATA_DIRECTORY}/var/lib/zabbix/modules:/var/lib/zabbix/modules:ro - - ${DATA_DIRECTORY}/var/lib/zabbix/enc:/var/lib/zabbix/enc:ro - - ${DATA_DIRECTORY}/var/lib/zabbix/ssh_keys:/var/lib/zabbix/ssh_keys:ro - - ${DATA_DIRECTORY}/var/lib/zabbix/mibs:/var/lib/zabbix/mibs:ro - - snmptraps:/var/lib/zabbix/snmptraps:rw - ulimits: - nproc: 65535 - nofile: - soft: 20000 - hard: 40000 - deploy: - resources: - limits: - cpus: '0.70' - memory: 512M - reservations: - cpus: '0.3' - memory: 256M - env_file: - - ${ENV_VARS_DIRECTORY}/.env_db_mysql_proxy - - ${ENV_VARS_DIRECTORY}/.env_prx - - ${ENV_VARS_DIRECTORY}/.env_prx_mysql - secrets: - - MYSQL_USER - - MYSQL_PASSWORD - - MYSQL_ROOT_USER - - MYSQL_ROOT_PASSWORD depends_on: - mysql-server - - zabbix-java-gateway - - zabbix-snmptraps - networks: - zbx_net_backend: - aliases: - - zabbix-proxy-mysql - zbx_net_frontend: - stop_grace_period: 30s labels: - com.zabbix.description: "Zabbix proxy with MySQL database support" - com.zabbix.company: "Zabbix LLC" - com.zabbix.component: "zabbix-proxy" - com.zabbix.dbtype: "mysql" com.zabbix.os: "${OL_OS_TAG}" zabbix-web-apache-pgsql: + extends: + file: compose_zabbix_components.yaml + service: zabbix-web-apache-pgsql image: "${ZABBIX_WEB_APACHE_PGSQL_IMAGE}:${ZABBIX_OL_IMAGE_TAG}${ZABBIX_IMAGE_TAG_POSTFIX}" - profiles: - - all - ports: - - "${ZABBIX_WEB_APACHE_HTTP_PORT}:8080" - - "${ZABBIX_WEB_APACHE_HTTPS_PORT}:8443" - restart: "${RESTART_POLICY}" volumes: - - /etc/localtime:/etc/localtime:ro - /etc/timezone:/etc/timezone:ro - - ${DATA_DIRECTORY}/etc/ssl/apache2:/etc/ssl/apache2:ro - - ${DATA_DIRECTORY}/usr/share/zabbix/modules/:/usr/share/zabbix/modules/:ro -# - ${ENV_VARS_DIRECTORY}/.ZBX_DB_CA_FILE:/run/secrets/root-ca.pem:ro -# - ${ENV_VARS_DIRECTORY}/.ZBX_DB_CERT_FILE:/run/secrets/client-cert.pem:ro -# - ${ENV_VARS_DIRECTORY}/.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_VARS_DIRECTORY}/.env_db_pgsql - - ${ENV_VARS_DIRECTORY}/.env_web - secrets: - - POSTGRES_USER - - POSTGRES_PASSWORD depends_on: - postgres-server - - zabbix-server - healthcheck: - test: ["CMD", "curl", "-f", "http://localhost:8080/ping"] - interval: 10s - timeout: 5s - retries: 3 - start_period: 30s - networks: - zbx_net_backend: - aliases: - - zabbix-web-apache-pgsql - zbx_net_frontend: - stop_grace_period: 10s - sysctls: - - net.core.somaxconn=65535 labels: - com.zabbix.description: "Zabbix frontend on Apache web-server with PostgreSQL database support" - com.zabbix.company: "Zabbix LLC" - com.zabbix.component: "zabbix-frontend" - com.zabbix.webserver: "apache2" - com.zabbix.dbtype: "pgsql" com.zabbix.os: "${OL_OS_TAG}" zabbix-web-nginx-pgsql: + extends: + file: compose_zabbix_components.yaml + service: zabbix-web-nginx-pgsql image: "${ZABBIX_WEB_NGINX_PGSQL_IMAGE}:${ZABBIX_OL_IMAGE_TAG}${ZABBIX_IMAGE_TAG_POSTFIX}" - ports: - - "${ZABBIX_WEB_NGINX_HTTP_PORT}:8080" - - "${ZABBIX_WEB_NGINX_HTTPS_PORT}:8443" - restart: "${RESTART_POLICY}" volumes: - - /etc/localtime:/etc/localtime:ro - /etc/timezone:/etc/timezone:ro - - ${DATA_DIRECTORY}/etc/ssl/nginx:/etc/ssl/nginx:ro - - ${DATA_DIRECTORY}/usr/share/zabbix/modules/:/usr/share/zabbix/modules/:ro -# - ${ENV_VARS_DIRECTORY}/.ZBX_DB_CA_FILE:/run/secrets/root-ca.pem:ro -# - ${ENV_VARS_DIRECTORY}/.ZBX_DB_CERT_FILE:/run/secrets/client-cert.pem:ro -# - ${ENV_VARS_DIRECTORY}/.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_VARS_DIRECTORY}/.env_db_pgsql - - ${ENV_VARS_DIRECTORY}/.env_web - secrets: - - POSTGRES_USER - - POSTGRES_PASSWORD depends_on: - postgres-server - - zabbix-server - healthcheck: - test: ["CMD", "curl", "-f", "http://localhost:8080/ping"] - interval: 10s - timeout: 5s - retries: 3 - start_period: 30s - networks: - zbx_net_backend: - aliases: - - zabbix-web-nginx-pgsql - 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: "${OL_OS_TAG}" zabbix-agent: + extends: + file: compose_zabbix_components.yaml + service: zabbix-agent image: "${ZABBIX_AGENT_IMAGE}:${ZABBIX_OL_IMAGE_TAG}${ZABBIX_IMAGE_TAG_POSTFIX}" - init: true - profiles: - - full - - all - ports: - - "${ZABBIX_AGENT_PORT}:10050" - restart: "${RESTART_POLICY}" volumes: - - /etc/localtime:/etc/localtime:ro - /etc/timezone:/etc/timezone:ro - - ${DATA_DIRECTORY}/etc/zabbix/zabbix_agentd.d:/etc/zabbix/zabbix_agentd.d:ro - - ${DATA_DIRECTORY}/var/lib/zabbix/modules:/var/lib/zabbix/modules:ro - - ${DATA_DIRECTORY}/var/lib/zabbix/enc:/var/lib/zabbix/enc:ro - - ${DATA_DIRECTORY}/var/lib/zabbix/ssh_keys:/var/lib/zabbix/ssh_keys:ro - deploy: - resources: - limits: - cpus: '0.2' - memory: 128M - reservations: - cpus: '0.1' - memory: 64M - mode: global - env_file: - - ${ENV_VARS_DIRECTORY}/.env_agent - privileged: true - pid: "host" - networks: - zbx_net_backend: - aliases: - - zabbix-agent - - zabbix-agent-passive - stop_grace_period: 5s labels: - com.zabbix.description: "Zabbix agent" - com.zabbix.company: "Zabbix LLC" - com.zabbix.component: "zabbix-agentd" com.zabbix.os: "${OL_OS_TAG}" zabbix-java-gateway: + extends: + file: compose_zabbix_components.yaml + service: zabbix-java-gateway image: "${ZABBIX_JAVA_GATEWAY_IMAGE}:${ZABBIX_OL_IMAGE_TAG}${ZABBIX_IMAGE_TAG_POSTFIX}" - profiles: - - full - - all - ports: - - "${ZABBIX_JAVA_GATEWAY_PORT}:10052" - restart: "${RESTART_POLICY}" - deploy: - resources: - limits: - cpus: '0.5' - memory: 512M - reservations: - cpus: '0.25' - memory: 256M - env_file: - - ${ENV_VARS_DIRECTORY}/.env_java - networks: - zbx_net_backend: - aliases: - - zabbix-java-gateway - stop_grace_period: 5s labels: - com.zabbix.description: "Zabbix Java Gateway" - com.zabbix.company: "Zabbix LLC" - com.zabbix.component: "java-gateway" com.zabbix.os: "${OL_OS_TAG}" zabbix-snmptraps: + extends: + file: compose_zabbix_components.yaml + service: zabbix-snmptraps image: "${ZABBIX_SNMPTRAPS_IMAGE}:${ZABBIX_OL_IMAGE_TAG}${ZABBIX_IMAGE_TAG_POSTFIX}" -# Override snmptrapd command arguments to receive SNMP traps by DNS -# It must be done with ZBX_SNMP_TRAP_USE_DNS=true environment variable -# command: /usr/sbin/snmptrapd -C -c /etc/snmp/snmptrapd.conf -Lo -A - profiles: - - full - - all - ports: - - "${ZABBIX_SNMPTRAPS_PORT}:1162/udp" - restart: "${RESTART_POLICY}" - volumes: - - snmptraps:/var/lib/zabbix/snmptraps:rw - deploy: - resources: - limits: - cpus: '0.5' - memory: 256M - reservations: - cpus: '0.25' - memory: 128M - env_file: - - ${ENV_VARS_DIRECTORY}/.env_snmptraps - networks: - zbx_net_frontend: - aliases: - - zabbix-snmptraps - zbx_net_backend: - stop_grace_period: 5s labels: - com.zabbix.description: "Zabbix snmptraps" - com.zabbix.company: "Zabbix LLC" - com.zabbix.component: "snmptraps" com.zabbix.os: "${OL_OS_TAG}" mysql-server: - image: "${MYSQL_IMAGE}:${MYSQL_IMAGE_TAG}" - profiles: - - all - command: - - mysqld - - --character-set-server=utf8 - - --collation-server=utf8_bin - - --default-authentication-plugin=mysql_native_password - restart: "${RESTART_POLICY}" - volumes: - - ${DATA_DIRECTORY}/var/lib/mysql:/var/lib/mysql:rw - env_file: - - ${ENV_VARS_DIRECTORY}/.env_db_mysql - secrets: - - MYSQL_USER - - MYSQL_PASSWORD - - MYSQL_ROOT_PASSWORD - stop_grace_period: 1m - networks: - zbx_net_backend: - aliases: - - mysql-server - - zabbix-database - - mysql-database + extends: + file: compose_databases.yaml + service: mysql-server postgres-server: - image: "${POSTGRESQL_IMAGE}:${POSTGRESQL_IMAGE_TAG}" -# 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 - restart: "${RESTART_POLICY}" - volumes: - - ${DATA_DIRECTORY}/var/lib/postgresql/data:/var/lib/postgresql/data:rw - - ${ENV_VARS_DIRECTORY}/.ZBX_DB_CA_FILE:/run/secrets/root-ca.pem:ro - - ${ENV_VARS_DIRECTORY}/.ZBX_DB_CERT_FILE:/run/secrets/server-cert.pem:ro - - ${ENV_VARS_DIRECTORY}/.ZBX_DB_KEY_FILE:/run/secrets/server-key.pem:ro - env_file: - - ${ENV_VARS_DIRECTORY}/.env_db_pgsql - secrets: - - POSTGRES_USER - - POSTGRES_PASSWORD - stop_grace_period: 1m - networks: - zbx_net_backend: - aliases: - - postgres-server - - pgsql-server - - pgsql-database + extends: + file: compose_databases.yaml + service: postgres-server - db_data_mysql: - image: busybox - profiles: - - all - volumes: - - ${DATA_DIRECTORY}/var/lib/mysql:/var/lib/mysql:rw + db-data-mysql: + extends: + file: compose_databases.yaml + service: db-data-mysql - db_data_pgsql: - image: busybox - volumes: - - ${DATA_DIRECTORY}/var/lib/postgresql/data:/var/lib/postgresql/data:rw + db-data-pgsql: + extends: + file: compose_databases.yaml + service: db-data-pgsql # elasticsearch: -# image: "${ELASTICSEARCH_IMAGE}:${ELASTICSEARCH_IMAGE_TAG}" -# restart: "${RESTART_POLICY}" -# profiles: -# - full -# - all -# environment: -# - transport.host=0.0.0.0 -# - discovery.zen.minimum_master_nodes=1 -# networks: -# zbx_net_backend: -# aliases: -# - elasticsearch +# extends: +# file: compose_databases.yaml +# service: elasticsearch networks: zbx_net_frontend: @@ -473,9 +127,17 @@ networks: driver: "${BACKEND_NETWORK_DRIVER}" config: - subnet: "${BACKEND_SUBNET}" + zbx_net_database: + driver: bridge + driver_opts: + com.docker.network.enable_ipv6: "${DATABASE_NETWORK_ENABLE_IPV6}" + internal: true + ipam: + driver: "${DATABASE_NETWORK_DRIVER}" volumes: snmptraps: +# dbsocket: secrets: MYSQL_USER: diff --git a/docker-compose_v3_ol_pgsql_local.yaml b/docker-compose_v3_ol_pgsql_local.yaml index f9fce2e91..879564487 100644 --- a/docker-compose_v3_ol_pgsql_local.yaml +++ b/docker-compose_v3_ol_pgsql_local.yaml @@ -45,6 +45,9 @@ services: - zabbix-build-base zabbix-server: + extends: + file: compose_zabbix_components.yaml + service: zabbix-server-pgsql build: context: ./Dockerfiles/server-pgsql/${OL_OS_TAG_SHORT} cache_from: @@ -52,69 +55,18 @@ services: args: BUILD_BASE_IMAGE: ${BUILD_BASE_PGSQL_IMAGE}:${ZABBIX_OL_IMAGE_TAG}${ZABBIX_LOCAL_IMAGE_TAG_POSTFIX} image: zabbix-server-pgsql:${ZABBIX_OL_IMAGE_TAG}${ZABBIX_LOCAL_IMAGE_TAG_POSTFIX} - init: true - ports: - - "${ZABBIX_SERVER_PORT}:10051" - restart: "${RESTART_POLICY}" volumes: - - /etc/localtime:/etc/localtime:ro - /etc/timezone:/etc/timezone:ro - - ${DATA_DIRECTORY}/usr/lib/zabbix/alertscripts:/usr/lib/zabbix/alertscripts:ro - - ${DATA_DIRECTORY}/usr/lib/zabbix/externalscripts:/usr/lib/zabbix/externalscripts:ro - - ${DATA_DIRECTORY}/var/lib/zabbix/dbscripts:/var/lib/zabbix/dbscripts:ro - - ${DATA_DIRECTORY}/var/lib/zabbix/export:/var/lib/zabbix/export:rw - - ${DATA_DIRECTORY}/var/lib/zabbix/modules:/var/lib/zabbix/modules:ro - - ${DATA_DIRECTORY}/var/lib/zabbix/enc:/var/lib/zabbix/enc:ro - - ${DATA_DIRECTORY}/var/lib/zabbix/ssh_keys:/var/lib/zabbix/ssh_keys:ro - - ${DATA_DIRECTORY}/var/lib/zabbix/mibs:/var/lib/zabbix/mibs:ro - - snmptraps:/var/lib/zabbix/snmptraps:rw -# - ${ENV_VARS_DIRECTORY}/.ZBX_DB_CA_FILE:/run/secrets/root-ca.pem:ro -# - ${ENV_VARS_DIRECTORY}/.ZBX_DB_CERT_FILE:/run/secrets/client-cert.pem:ro -# - ${ENV_VARS_DIRECTORY}/.ZBX_DB_KEY_FILE:/run/secrets/client-key.pem:ro - 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_VARS_DIRECTORY}/.env_db_pgsql - - ${ENV_VARS_DIRECTORY}/.env_srv - secrets: - - POSTGRES_USER - - POSTGRES_PASSWORD depends_on: - postgres-server - zabbix-build-pgsql - networks: - zbx_net_backend: - aliases: - - zabbix-server - - zabbix-server-pgsql - zbx_net_frontend: -# devices: -# - "/dev/ttyUSB0:/dev/ttyUSB0" - stop_grace_period: 30s - sysctls: - - net.ipv4.ip_local_port_range=1024 64999 - - 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: "${OL_OS_TAG}" zabbix-proxy-sqlite3: + extends: + file: compose_zabbix_components.yaml + service: zabbix-proxy-sqlite3 build: context: ./Dockerfiles/proxy-sqlite3/${OL_OS_TAG_SHORT} cache_from: @@ -122,55 +74,17 @@ services: args: BUILD_BASE_IMAGE: ${BUILD_BASE_SQLITE3_IMAGE}:${ZABBIX_OL_IMAGE_TAG}${ZABBIX_LOCAL_IMAGE_TAG_POSTFIX} image: zabbix-proxy-sqlite3:${ZABBIX_OL_IMAGE_TAG}${ZABBIX_LOCAL_IMAGE_TAG_POSTFIX} - init: true - profiles: - - all - ports: - - "${ZABBIX_PROXY_SQLITE3_PORT}:10051" - restart: "${RESTART_POLICY}" volumes: - - /etc/localtime:/etc/localtime:ro - /etc/timezone:/etc/timezone:ro - - ${DATA_DIRECTORY}/usr/lib/zabbix/externalscripts:/usr/lib/zabbix/externalscripts:ro - - ${DATA_DIRECTORY}/var/lib/zabbix/modules:/var/lib/zabbix/modules:ro - - ${DATA_DIRECTORY}/var/lib/zabbix/enc:/var/lib/zabbix/enc:ro - - ${DATA_DIRECTORY}/var/lib/zabbix/ssh_keys:/var/lib/zabbix/ssh_keys:ro - - ${DATA_DIRECTORY}/var/lib/zabbix/mibs:/var/lib/zabbix/mibs:ro - - snmptraps:/var/lib/zabbix/snmptraps:rw - ulimits: - nproc: 65535 - nofile: - soft: 20000 - hard: 40000 - deploy: - resources: - limits: - cpus: '0.70' - memory: 512M - reservations: - cpus: '0.3' - memory: 256M - env_file: - - ${ENV_VARS_DIRECTORY}/.env_prx - - ${ENV_VARS_DIRECTORY}/.env_prx_sqlite3 depends_on: - - zabbix-java-gateway - - zabbix-snmptraps - zabbix-build-sqlite3 - networks: - zbx_net_backend: - aliases: - - zabbix-proxy-sqlite3 - zbx_net_frontend: - stop_grace_period: 30s labels: - com.zabbix.description: "Zabbix proxy with SQLite3 database support" - com.zabbix.company: "Zabbix LLC" - com.zabbix.component: "zabbix-proxy" - com.zabbix.dbtype: "sqlite3" com.zabbix.os: "${OL_OS_TAG}" zabbix-proxy-mysql: + extends: + file: compose_zabbix_components.yaml + service: zabbix-proxy-mysql build: context: ./Dockerfiles/proxy-mysql/${OL_OS_TAG_SHORT} cache_from: @@ -178,62 +92,18 @@ services: args: BUILD_BASE_IMAGE: ${BUILD_BASE_MYSQL_IMAGE}:${ZABBIX_OL_IMAGE_TAG}${ZABBIX_LOCAL_IMAGE_TAG_POSTFIX} image: zabbix-proxy-mysql:${ZABBIX_OL_IMAGE_TAG}${ZABBIX_LOCAL_IMAGE_TAG_POSTFIX} - init: true - profiles: - - all - ports: - - "${ZABBIX_PROXY_MYSQL_PORT}:10051" - restart: "${RESTART_POLICY}" volumes: - - /etc/localtime:/etc/localtime:ro - /etc/timezone:/etc/timezone:ro - - ${DATA_DIRECTORY}/usr/lib/zabbix/externalscripts:/usr/lib/zabbix/externalscripts:ro - - ${DATA_DIRECTORY}/var/lib/zabbix/modules:/var/lib/zabbix/modules:ro - - ${DATA_DIRECTORY}/var/lib/zabbix/enc:/var/lib/zabbix/enc:ro - - ${DATA_DIRECTORY}/var/lib/zabbix/ssh_keys:/var/lib/zabbix/ssh_keys:ro - - ${DATA_DIRECTORY}/var/lib/zabbix/mibs:/var/lib/zabbix/mibs:ro - - snmptraps:/var/lib/zabbix/snmptraps:rw - ulimits: - nproc: 65535 - nofile: - soft: 20000 - hard: 40000 - deploy: - resources: - limits: - cpus: '0.70' - memory: 512M - reservations: - cpus: '0.3' - memory: 256M - env_file: - - ${ENV_VARS_DIRECTORY}/.env_db_mysql_proxy - - ${ENV_VARS_DIRECTORY}/.env_prx - - ${ENV_VARS_DIRECTORY}/.env_prx_mysql - secrets: - - MYSQL_USER - - MYSQL_PASSWORD - - MYSQL_ROOT_USER - - MYSQL_ROOT_PASSWORD depends_on: - mysql-server - - zabbix-java-gateway - - zabbix-snmptraps - zabbix-build-mysql - networks: - zbx_net_backend: - aliases: - - zabbix-proxy-mysql - zbx_net_frontend: - stop_grace_period: 30s labels: - com.zabbix.description: "Zabbix proxy with MySQL database support" - com.zabbix.company: "Zabbix LLC" - com.zabbix.component: "zabbix-proxy" - com.zabbix.dbtype: "mysql" com.zabbix.os: "${OL_OS_TAG}" zabbix-web-apache-pgsql: + extends: + file: compose_zabbix_components.yaml + service: zabbix-web-apache-pgsql build: context: ./Dockerfiles/web-apache-pgsql/${OL_OS_TAG_SHORT} cache_from: @@ -241,61 +111,18 @@ services: args: BUILD_BASE_IMAGE: ${BUILD_BASE_PGSQL_IMAGE}:${ZABBIX_OL_IMAGE_TAG}${ZABBIX_LOCAL_IMAGE_TAG_POSTFIX} image: zabbix-web-apache-pgsql:${ZABBIX_OL_IMAGE_TAG}${ZABBIX_LOCAL_IMAGE_TAG_POSTFIX} - profiles: - - all - ports: - - "${ZABBIX_WEB_APACHE_HTTP_PORT}:8080" - - "${ZABBIX_WEB_APACHE_HTTPS_PORT}:8443" - restart: "${RESTART_POLICY}" volumes: - - /etc/localtime:/etc/localtime:ro - /etc/timezone:/etc/timezone:ro - - ${DATA_DIRECTORY}/etc/ssl/apache2:/etc/ssl/apache2:ro - - ${DATA_DIRECTORY}/usr/share/zabbix/modules/:/usr/share/zabbix/modules/:ro -# - ${ENV_VARS_DIRECTORY}/.ZBX_DB_CA_FILE:/run/secrets/root-ca.pem:ro -# - ${ENV_VARS_DIRECTORY}/.ZBX_DB_CERT_FILE:/run/secrets/client-cert.pem:ro -# - ${ENV_VARS_DIRECTORY}/.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_VARS_DIRECTORY}/.env_db_pgsql - - ${ENV_VARS_DIRECTORY}/.env_web - secrets: - - POSTGRES_USER - - POSTGRES_PASSWORD depends_on: - postgres-server - - zabbix-server - zabbix-build-pgsql - healthcheck: - test: ["CMD", "curl", "-f", "http://localhost:8080/ping"] - interval: 10s - timeout: 5s - retries: 3 - start_period: 30s - networks: - zbx_net_backend: - aliases: - - zabbix-web-apache-pgsql - zbx_net_frontend: - stop_grace_period: 10s - sysctls: - - net.core.somaxconn=65535 labels: - com.zabbix.description: "Zabbix frontend on Apache web-server with PostgreSQL database support" - com.zabbix.company: "Zabbix LLC" - com.zabbix.component: "zabbix-frontend" - com.zabbix.webserver: "apache2" - com.zabbix.dbtype: "pgsql" com.zabbix.os: "${OL_OS_TAG}" zabbix-web-nginx-pgsql: + extends: + file: compose_zabbix_components.yaml + service: zabbix-web-nginx-pgsql build: context: ./Dockerfiles/web-nginx-pgsql/${OL_OS_TAG_SHORT} cache_from: @@ -303,256 +130,86 @@ services: args: BUILD_BASE_IMAGE: ${BUILD_BASE_PGSQL_IMAGE}:${ZABBIX_OL_IMAGE_TAG}${ZABBIX_LOCAL_IMAGE_TAG_POSTFIX} image: zabbix-web-nginx-pgsql:${ZABBIX_OL_IMAGE_TAG}${ZABBIX_LOCAL_IMAGE_TAG_POSTFIX} - ports: - - "${ZABBIX_WEB_NGINX_HTTP_PORT}:8080" - - "${ZABBIX_WEB_NGINX_HTTPS_PORT}:8443" - restart: "${RESTART_POLICY}" volumes: - - /etc/localtime:/etc/localtime:ro - /etc/timezone:/etc/timezone:ro - - ${DATA_DIRECTORY}/etc/ssl/nginx:/etc/ssl/nginx:ro - - ${DATA_DIRECTORY}/usr/share/zabbix/modules/:/usr/share/zabbix/modules/:ro -# - ${ENV_VARS_DIRECTORY}/.ZBX_DB_CA_FILE:/run/secrets/root-ca.pem:ro -# - ${ENV_VARS_DIRECTORY}/.ZBX_DB_CERT_FILE:/run/secrets/client-cert.pem:ro -# - ${ENV_VARS_DIRECTORY}/.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_VARS_DIRECTORY}/.env_db_pgsql - - ${ENV_VARS_DIRECTORY}/.env_web - secrets: - - POSTGRES_USER - - POSTGRES_PASSWORD depends_on: - postgres-server - - zabbix-server - zabbix-build-pgsql - healthcheck: - test: ["CMD", "curl", "-f", "http://localhost:8080/ping"] - interval: 10s - timeout: 5s - retries: 3 - start_period: 30s - networks: - zbx_net_backend: - aliases: - - zabbix-web-nginx-pgsql - 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: "${OL_OS_TAG}" zabbix-agent: + extends: + file: compose_zabbix_components.yaml + service: zabbix-agent build: context: ./Dockerfiles/agent/${OL_OS_TAG_SHORT} cache_from: - "${OL_CACHE_FROM}" args: - BUILD_BASE_IMAGE: ${BUILD_BASE_PGSQL_IMAGE}:${ZABBIX_OL_IMAGE_TAG}${ZABBIX_LOCAL_IMAGE_TAG_POSTFIX} + BUILD_BASE_IMAGE: ${BUILD_BASE_MYSQL_IMAGE}:${ZABBIX_OL_IMAGE_TAG}${ZABBIX_LOCAL_IMAGE_TAG_POSTFIX} image: zabbix-agent:${ZABBIX_OL_IMAGE_TAG}${ZABBIX_LOCAL_IMAGE_TAG_POSTFIX} - init: true - profiles: - - full - - all - ports: - - "${ZABBIX_AGENT_PORT}:10050" - restart: "${RESTART_POLICY}" volumes: - - /etc/localtime:/etc/localtime:ro - /etc/timezone:/etc/timezone:ro - - ${DATA_DIRECTORY}/etc/zabbix/zabbix_agentd.d:/etc/zabbix/zabbix_agentd.d:ro - - ${DATA_DIRECTORY}/var/lib/zabbix/modules:/var/lib/zabbix/modules:ro - - ${DATA_DIRECTORY}/var/lib/zabbix/enc:/var/lib/zabbix/enc:ro - - ${DATA_DIRECTORY}/var/lib/zabbix/ssh_keys:/var/lib/zabbix/ssh_keys:ro - deploy: - resources: - limits: - cpus: '0.2' - memory: 128M - reservations: - cpus: '0.1' - memory: 64M - mode: global - env_file: - - ${ENV_VARS_DIRECTORY}/.env_agent - privileged: true - pid: "host" depends_on: - zabbix-build-pgsql - networks: - zbx_net_backend: - aliases: - - zabbix-agent - - zabbix-agent-passive - stop_grace_period: 5s labels: - com.zabbix.description: "Zabbix agent" - com.zabbix.company: "Zabbix LLC" - com.zabbix.component: "zabbix-agentd" com.zabbix.os: "${OL_OS_TAG}" zabbix-java-gateway: + extends: + file: compose_zabbix_components.yaml + service: zabbix-java-gateway build: context: ./Dockerfiles/java-gateway/${OL_OS_TAG_SHORT} cache_from: - "${OL_CACHE_FROM}" args: - BUILD_BASE_IMAGE: ${BUILD_BASE_PGSQL_IMAGE}:${ZABBIX_OL_IMAGE_TAG}${ZABBIX_LOCAL_IMAGE_TAG_POSTFIX} + BUILD_BASE_IMAGE: ${BUILD_BASE_MYSQL_IMAGE}:${ZABBIX_OL_IMAGE_TAG}${ZABBIX_LOCAL_IMAGE_TAG_POSTFIX} image: zabbix-java-gateway:${ZABBIX_OL_IMAGE_TAG}${ZABBIX_LOCAL_IMAGE_TAG_POSTFIX} - profiles: - - full - - all - ports: - - "${ZABBIX_JAVA_GATEWAY_PORT}:10052" - restart: "${RESTART_POLICY}" - deploy: - resources: - limits: - cpus: '0.5' - memory: 512M - reservations: - cpus: '0.25' - memory: 256M - env_file: - - ${ENV_VARS_DIRECTORY}/.env_java depends_on: - zabbix-build-pgsql - networks: - zbx_net_backend: - aliases: - - zabbix-java-gateway - stop_grace_period: 5s labels: - com.zabbix.description: "Zabbix Java Gateway" - com.zabbix.company: "Zabbix LLC" - com.zabbix.component: "java-gateway" com.zabbix.os: "${OL_OS_TAG}" zabbix-snmptraps: + extends: + file: compose_zabbix_components.yaml + service: zabbix-snmptraps build: context: ./Dockerfiles/snmptraps/${OL_OS_TAG_SHORT} cache_from: - "${OL_CACHE_FROM}" image: zabbix-snmptraps:${ZABBIX_OL_IMAGE_TAG}${ZABBIX_LOCAL_IMAGE_TAG_POSTFIX} -# Override snmptrapd command arguments to receive SNMP traps by DNS -# It must be done with ZBX_SNMP_TRAP_USE_DNS=true environment variable -# command: /usr/sbin/snmptrapd -C -c /etc/snmp/snmptrapd.conf -Lo -A - profiles: - - full - - all - ports: - - "${ZABBIX_SNMPTRAPS_PORT}:1162/udp" - restart: "${RESTART_POLICY}" - volumes: - - snmptraps:/var/lib/zabbix/snmptraps:rw - deploy: - resources: - limits: - cpus: '0.5' - memory: 256M - reservations: - cpus: '0.25' - memory: 128M - env_file: - - ${ENV_VARS_DIRECTORY}/.env_snmptraps - networks: - zbx_net_frontend: - aliases: - - zabbix-snmptraps - zbx_net_backend: - stop_grace_period: 5s + depends_on: + - zabbix-build-pgsql labels: - com.zabbix.description: "Zabbix snmptraps" - com.zabbix.company: "Zabbix LLC" - com.zabbix.component: "snmptraps" com.zabbix.os: "${OL_OS_TAG}" mysql-server: - image: "${MYSQL_IMAGE}:${MYSQL_IMAGE_TAG}" - profiles: - - all - command: - - mysqld - - --character-set-server=utf8 - - --collation-server=utf8_bin - - --default-authentication-plugin=mysql_native_password - restart: "${RESTART_POLICY}" - volumes: - - ${DATA_DIRECTORY}/var/lib/mysql:/var/lib/mysql:rw - env_file: - - ${ENV_VARS_DIRECTORY}/.env_db_mysql - secrets: - - MYSQL_USER - - MYSQL_PASSWORD - - MYSQL_ROOT_PASSWORD - stop_grace_period: 1m - networks: - zbx_net_backend: - aliases: - - mysql-server - - zabbix-database - - mysql-database + extends: + file: compose_databases.yaml + service: mysql-server postgres-server: - image: "${POSTGRESQL_IMAGE}:${POSTGRESQL_IMAGE_TAG}" -# 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 - restart: "${RESTART_POLICY}" - volumes: - - ${DATA_DIRECTORY}/var/lib/postgresql/data:/var/lib/postgresql/data:rw - - ${ENV_VARS_DIRECTORY}/.ZBX_DB_CA_FILE:/run/secrets/root-ca.pem:ro - - ${ENV_VARS_DIRECTORY}/.ZBX_DB_CERT_FILE:/run/secrets/server-cert.pem:ro - - ${ENV_VARS_DIRECTORY}/.ZBX_DB_KEY_FILE:/run/secrets/server-key.pem:ro - env_file: - - ${ENV_VARS_DIRECTORY}/.env_db_pgsql - secrets: - - POSTGRES_USER - - POSTGRES_PASSWORD - stop_grace_period: 1m - networks: - zbx_net_backend: - aliases: - - postgres-server - - pgsql-server - - pgsql-database + extends: + file: compose_databases.yaml + service: postgres-server - db_data_mysql: - image: busybox - profiles: - - all - volumes: - - ${DATA_DIRECTORY}/var/lib/mysql:/var/lib/mysql:rw + db-data-mysql: + extends: + file: compose_databases.yaml + service: db-data-mysql - db_data_pgsql: - image: busybox - volumes: - - ${DATA_DIRECTORY}/var/lib/postgresql/data:/var/lib/postgresql/data:rw + db-data-pgsql: + extends: + file: compose_databases.yaml + service: db-data-pgsql # elasticsearch: -# image: "${ELASTICSEARCH_IMAGE}:${ELASTICSEARCH_IMAGE_TAG}" -# restart: "${RESTART_POLICY}" -# profiles: -# - full -# - all -# environment: -# - transport.host=0.0.0.0 -# - discovery.zen.minimum_master_nodes=1 -# networks: -# zbx_net_backend: -# aliases: -# - elasticsearch +# extends: +# file: compose_databases.yaml +# service: elasticsearch networks: zbx_net_frontend: @@ -572,9 +229,17 @@ networks: driver: "${BACKEND_NETWORK_DRIVER}" config: - subnet: "${BACKEND_SUBNET}" + zbx_net_database: + driver: bridge + driver_opts: + com.docker.network.enable_ipv6: "${DATABASE_NETWORK_ENABLE_IPV6}" + internal: true + ipam: + driver: "${DATABASE_NETWORK_DRIVER}" volumes: snmptraps: +# dbsocket: secrets: MYSQL_USER: diff --git a/docker-compose_v3_ubuntu_mysql_latest.yaml b/docker-compose_v3_ubuntu_mysql_latest.yaml index 5cc5b2b00..5eebfe69a 100644 --- a/docker-compose_v3_ubuntu_mysql_latest.yaml +++ b/docker-compose_v3_ubuntu_mysql_latest.yaml @@ -1,439 +1,91 @@ version: '3.8' services: zabbix-server: + extends: + file: compose_zabbix_components.yaml + service: zabbix-server-mysql image: "${ZABBIX_SERVER_MYSQL_IMAGE}:${ZABBIX_UBUNTU_IMAGE_TAG}${ZABBIX_IMAGE_TAG_POSTFIX}" - init: true - ports: - - "${ZABBIX_SERVER_PORT}:10051" - restart: "${RESTART_POLICY}" - volumes: - - /etc/localtime:/etc/localtime:ro -# - dbsocket:/var/run/mysqld/ - - ${DATA_DIRECTORY}/usr/lib/zabbix/alertscripts:/usr/lib/zabbix/alertscripts:ro - - ${DATA_DIRECTORY}/usr/lib/zabbix/externalscripts:/usr/lib/zabbix/externalscripts:ro - - ${DATA_DIRECTORY}/var/lib/zabbix/dbscripts:/var/lib/zabbix/dbscripts:ro - - ${DATA_DIRECTORY}/var/lib/zabbix/export:/var/lib/zabbix/export:rw - - ${DATA_DIRECTORY}/var/lib/zabbix/modules:/var/lib/zabbix/modules:ro - - ${DATA_DIRECTORY}/var/lib/zabbix/enc:/var/lib/zabbix/enc:ro - - ${DATA_DIRECTORY}/var/lib/zabbix/ssh_keys:/var/lib/zabbix/ssh_keys:ro - - ${DATA_DIRECTORY}/var/lib/zabbix/mibs:/var/lib/zabbix/mibs:ro - - snmptraps:/var/lib/zabbix/snmptraps:rw - 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_VARS_DIRECTORY}/.env_db_mysql - - ${ENV_VARS_DIRECTORY}/.env_srv - secrets: - - MYSQL_USER - - MYSQL_PASSWORD - - MYSQL_ROOT_USER - - MYSQL_ROOT_PASSWORD -# - client-key.pem -# - client-cert.pem -# - root-ca.pem depends_on: - mysql-server - networks: - zbx_net_backend: - aliases: - - zabbix-server - - zabbix-server-mysql - zbx_net_frontend: -# devices: -# - "/dev/ttyUSB0:/dev/ttyUSB0" - stop_grace_period: 30s - sysctls: - - net.ipv4.ip_local_port_range=1024 64999 - - 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 MySQL database support" - com.zabbix.company: "Zabbix LLC" - com.zabbix.component: "zabbix-server" - com.zabbix.dbtype: "mysql" com.zabbix.os: "${UBUNTU_OS_TAG}" zabbix-proxy-sqlite3: + extends: + file: compose_zabbix_components.yaml + service: zabbix-proxy-sqlite3 image: "${ZABBIX_PROXY_SQLITE3_IMAGE}:${ZABBIX_UBUNTU_IMAGE_TAG}${ZABBIX_IMAGE_TAG_POSTFIX}" - init: true - profiles: - - all - ports: - - "${ZABBIX_PROXY_SQLITE3_PORT}:10051" - restart: "${RESTART_POLICY}" - volumes: - - /etc/localtime:/etc/localtime:ro - - ${DATA_DIRECTORY}/usr/lib/zabbix/externalscripts:/usr/lib/zabbix/externalscripts:ro - - ${DATA_DIRECTORY}/var/lib/zabbix/modules:/var/lib/zabbix/modules:ro - - ${DATA_DIRECTORY}/var/lib/zabbix/enc:/var/lib/zabbix/enc:ro - - ${DATA_DIRECTORY}/var/lib/zabbix/ssh_keys:/var/lib/zabbix/ssh_keys:ro - - ${DATA_DIRECTORY}/var/lib/zabbix/mibs:/var/lib/zabbix/mibs:ro - - snmptraps:/var/lib/zabbix/snmptraps:rw - ulimits: - nproc: 65535 - nofile: - soft: 20000 - hard: 40000 - deploy: - resources: - limits: - cpus: '0.70' - memory: 512M - reservations: - cpus: '0.3' - memory: 256M - env_file: - - ${ENV_VARS_DIRECTORY}/.env_prx - - ${ENV_VARS_DIRECTORY}/.env_prx_sqlite3 - depends_on: - - zabbix-java-gateway - - zabbix-snmptraps - networks: - zbx_net_backend: - aliases: - - zabbix-proxy-sqlite3 - zbx_net_frontend: - stop_grace_period: 30s labels: - com.zabbix.description: "Zabbix proxy with SQLite3 database support" - com.zabbix.company: "Zabbix LLC" - com.zabbix.component: "zabbix-proxy" - com.zabbix.dbtype: "sqlite3" com.zabbix.os: "${UBUNTU_OS_TAG}" zabbix-proxy-mysql: + extends: + file: compose_zabbix_components.yaml + service: zabbix-proxy-mysql image: "${ZABBIX_PROXY_MYSQL_IMAGE}:${ZABBIX_UBUNTU_IMAGE_TAG}${ZABBIX_IMAGE_TAG_POSTFIX}" - init: true - profiles: - - all - ports: - - "${ZABBIX_PROXY_MYSQL_PORT}:10051" - restart: "${RESTART_POLICY}" - volumes: - - /etc/localtime:/etc/localtime:ro -# - dbsocket:/var/run/mysqld/ - - ${DATA_DIRECTORY}/usr/lib/zabbix/externalscripts:/usr/lib/zabbix/externalscripts:ro - - ${DATA_DIRECTORY}/var/lib/zabbix/modules:/var/lib/zabbix/modules:ro - - ${DATA_DIRECTORY}/var/lib/zabbix/enc:/var/lib/zabbix/enc:ro - - ${DATA_DIRECTORY}/var/lib/zabbix/ssh_keys:/var/lib/zabbix/ssh_keys:ro - - ${DATA_DIRECTORY}/var/lib/zabbix/mibs:/var/lib/zabbix/mibs:ro - - snmptraps:/var/lib/zabbix/snmptraps:rw - ulimits: - nproc: 65535 - nofile: - soft: 20000 - hard: 40000 - deploy: - resources: - limits: - cpus: '0.70' - memory: 512M - reservations: - cpus: '0.3' - memory: 256M - env_file: - - ${ENV_VARS_DIRECTORY}/.env_db_mysql_proxy - - ${ENV_VARS_DIRECTORY}/.env_prx - - ${ENV_VARS_DIRECTORY}/.env_prx_mysql depends_on: - mysql-server - - zabbix-java-gateway - - zabbix-snmptraps - secrets: - - MYSQL_USER - - MYSQL_PASSWORD - - MYSQL_ROOT_USER - - MYSQL_ROOT_PASSWORD -# - client-key.pem -# - client-cert.pem -# - root-ca.pem - networks: - zbx_net_backend: - aliases: - - zabbix-proxy-mysql - zbx_net_frontend: - stop_grace_period: 30s labels: - com.zabbix.description: "Zabbix proxy with MySQL database support" - com.zabbix.company: "Zabbix LLC" - com.zabbix.component: "zabbix-proxy" - com.zabbix.dbtype: "mysql" com.zabbix.os: "${UBUNTU_OS_TAG}" zabbix-web-apache-mysql: + extends: + file: compose_zabbix_components.yaml + service: zabbix-web-apache-mysql image: "${ZABBIX_WEB_APACHE_MYSQL_IMAGE}:${ZABBIX_UBUNTU_IMAGE_TAG}${ZABBIX_IMAGE_TAG_POSTFIX}" - profiles: - - all - ports: - - "${ZABBIX_WEB_APACHE_HTTP_PORT}:8080" - - "${ZABBIX_WEB_APACHE_HTTPS_PORT}:8443" - restart: "${RESTART_POLICY}" - volumes: - - /etc/localtime:/etc/localtime:ro -# - dbsocket:/var/run/mysqld/ - - ${DATA_DIRECTORY}/etc/ssl/apache2:/etc/ssl/apache2:ro - - ${DATA_DIRECTORY}/usr/share/zabbix/modules/:/usr/share/zabbix/modules/:ro - deploy: - resources: - limits: - cpus: '0.70' - memory: 512M - reservations: - cpus: '0.5' - memory: 256M - env_file: - - ${ENV_VARS_DIRECTORY}/.env_db_mysql - - ${ENV_VARS_DIRECTORY}/.env_web - secrets: - - MYSQL_USER - - MYSQL_PASSWORD -# - client-key.pem -# - client-cert.pem -# - root-ca.pem depends_on: - mysql-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-apache-mysql - zbx_net_frontend: - stop_grace_period: 10s - sysctls: - - net.core.somaxconn=65535 labels: - com.zabbix.description: "Zabbix frontend on Apache web-server with MySQL database support" - com.zabbix.company: "Zabbix LLC" - com.zabbix.component: "zabbix-frontend" - com.zabbix.webserver: "apache2" - com.zabbix.dbtype: "mysql" com.zabbix.os: "${UBUNTU_OS_TAG}" zabbix-web-nginx-mysql: + extends: + file: compose_zabbix_components.yaml + service: zabbix-web-nginx-mysql image: "${ZABBIX_WEB_NGINX_MYSQL_IMAGE}:${ZABBIX_UBUNTU_IMAGE_TAG}${ZABBIX_IMAGE_TAG_POSTFIX}" - ports: - - "${ZABBIX_WEB_NGINX_HTTP_PORT}:8080" - - "${ZABBIX_WEB_NGINX_HTTPS_PORT}:8443" - restart: "${RESTART_POLICY}" - volumes: - - /etc/localtime:/etc/localtime:ro -# - dbsocket:/var/run/mysqld/ - - ${DATA_DIRECTORY}/etc/ssl/nginx:/etc/ssl/nginx:ro - - ${DATA_DIRECTORY}/usr/share/zabbix/modules/:/usr/share/zabbix/modules/:ro - deploy: - resources: - limits: - cpus: '0.70' - memory: 512M - reservations: - cpus: '0.5' - memory: 256M - env_file: - - ${ENV_VARS_DIRECTORY}/.env_db_mysql - - ${ENV_VARS_DIRECTORY}/.env_web - secrets: - - MYSQL_USER - - MYSQL_PASSWORD -# - client-key.pem -# - client-cert.pem -# - root-ca.pem depends_on: - mysql-server - - zabbix-server - healthcheck: - test: ["CMD", "curl", "-f", "http://localhost:8080/ping"] - interval: 10s - timeout: 5s - retries: 3 - start_period: 30s - networks: - zbx_net_backend: - aliases: - - zabbix-web-nginx-mysql - zbx_net_frontend: - stop_grace_period: 10s - sysctls: - - net.core.somaxconn=65535 labels: - com.zabbix.description: "Zabbix frontend on Nginx web-server with MySQL database support" - com.zabbix.company: "Zabbix LLC" - com.zabbix.component: "zabbix-frontend" - com.zabbix.webserver: "nginx" - com.zabbix.dbtype: "mysql" com.zabbix.os: "${UBUNTU_OS_TAG}" zabbix-agent: + extends: + file: compose_zabbix_components.yaml + service: zabbix-agent image: "${ZABBIX_AGENT_IMAGE}:${ZABBIX_UBUNTU_IMAGE_TAG}${ZABBIX_IMAGE_TAG_POSTFIX}" - init: true - profiles: - - full - - all - ports: - - "${ZABBIX_AGENT_PORT}:10050" - restart: "${RESTART_POLICY}" - volumes: - - /etc/localtime:/etc/localtime:ro - - ${DATA_DIRECTORY}/etc/zabbix/zabbix_agentd.d:/etc/zabbix/zabbix_agentd.d:ro - - ${DATA_DIRECTORY}/var/lib/zabbix/modules:/var/lib/zabbix/modules:ro - - ${DATA_DIRECTORY}/var/lib/zabbix/enc:/var/lib/zabbix/enc:ro - - ${DATA_DIRECTORY}/var/lib/zabbix/ssh_keys:/var/lib/zabbix/ssh_keys:ro - deploy: - resources: - limits: - cpus: '0.2' - memory: 128M - reservations: - cpus: '0.1' - memory: 64M - mode: global - env_file: - - ${ENV_VARS_DIRECTORY}/.env_agent - privileged: true - pid: "host" - networks: - zbx_net_backend: - aliases: - - zabbix-agent - - zabbix-agent-passive - stop_grace_period: 5s labels: - com.zabbix.description: "Zabbix agent" - com.zabbix.company: "Zabbix LLC" - com.zabbix.component: "zabbix-agentd" com.zabbix.os: "${UBUNTU_OS_TAG}" zabbix-java-gateway: + extends: + file: compose_zabbix_components.yaml + service: zabbix-java-gateway image: "${ZABBIX_JAVA_GATEWAY_IMAGE}:${ZABBIX_UBUNTU_IMAGE_TAG}${ZABBIX_IMAGE_TAG_POSTFIX}" - profiles: - - full - - all - ports: - - "${ZABBIX_JAVA_GATEWAY_PORT}:10052" - restart: "${RESTART_POLICY}" - deploy: - resources: - limits: - cpus: '0.5' - memory: 512M - reservations: - cpus: '0.25' - memory: 256M - env_file: - - ${ENV_VARS_DIRECTORY}/.env_java - networks: - zbx_net_backend: - aliases: - - zabbix-java-gateway - stop_grace_period: 5s labels: - com.zabbix.description: "Zabbix Java Gateway" - com.zabbix.company: "Zabbix LLC" - com.zabbix.component: "java-gateway" com.zabbix.os: "${UBUNTU_OS_TAG}" zabbix-snmptraps: + extends: + file: compose_zabbix_components.yaml + service: zabbix-snmptraps image: "${ZABBIX_SNMPTRAPS_IMAGE}:${ZABBIX_UBUNTU_IMAGE_TAG}${ZABBIX_IMAGE_TAG_POSTFIX}" -# Override snmptrapd command arguments to receive SNMP traps by DNS -# It must be done with ZBX_SNMP_TRAP_USE_DNS=true environment variable -# command: /usr/sbin/snmptrapd -C -c /etc/snmp/snmptrapd.conf -Lo -A - profiles: - - full - - all - ports: - - "${ZABBIX_SNMPTRAPS_PORT}:1162/udp" - restart: "${RESTART_POLICY}" - volumes: - - snmptraps:/var/lib/zabbix/snmptraps:rw - deploy: - resources: - limits: - cpus: '0.5' - memory: 256M - reservations: - cpus: '0.25' - memory: 128M - env_file: - - ${ENV_VARS_DIRECTORY}/.env_snmptraps - networks: - zbx_net_frontend: - aliases: - - zabbix-snmptraps - zbx_net_backend: - stop_grace_period: 5s labels: - com.zabbix.description: "Zabbix snmptraps" - com.zabbix.company: "Zabbix LLC" - com.zabbix.component: "snmptraps" com.zabbix.os: "${UBUNTU_OS_TAG}" mysql-server: - image: "${MYSQL_IMAGE}:${MYSQL_IMAGE_TAG}" - command: - - mysqld - - --character-set-server=utf8 - - --collation-server=utf8_bin - - --default-authentication-plugin=mysql_native_password -# - --require-secure-transport -# - --ssl-ca=/run/secrets/root-ca.pem -# - --ssl-cert=/run/secrets/server-cert.pem -# - --ssl-key=/run/secrets/server-key.pem - restart: "${RESTART_POLICY}" - volumes: - - ${DATA_DIRECTORY}/var/lib/mysql:/var/lib/mysql:rw -# - dbsocket:/var/run/mysqld/ - env_file: - - ${ENV_VARS_DIRECTORY}/.env_db_mysql - secrets: - - MYSQL_USER - - MYSQL_PASSWORD - - MYSQL_ROOT_PASSWORD -# - server-key.pem -# - server-cert.pem -# - root-ca.pem - stop_grace_period: 1m - networks: - zbx_net_backend: - aliases: - - mysql-server - - zabbix-database - - mysql-database + extends: + file: compose_databases.yaml + service: mysql-server - db_data_mysql: - image: busybox - volumes: - - ${DATA_DIRECTORY}/var/lib/mysql:/var/lib/mysql:rw + db-data-mysql: + extends: + file: compose_databases.yaml + service: db-data-mysql # elasticsearch: -# image: "${ELASTICSEARCH_IMAGE}:${ELASTICSEARCH_IMAGE_TAG}" -# restart: "${RESTART_POLICY}" -# profiles: -# - full -# - all -# environment: -# - transport.host=0.0.0.0 -# - discovery.zen.minimum_master_nodes=1 -# networks: -# zbx_net_backend: -# aliases: -# - elasticsearch +# extends: +# file: compose_databases.yaml +# service: elasticsearch networks: zbx_net_frontend: @@ -453,6 +105,13 @@ networks: driver: "${BACKEND_NETWORK_DRIVER}" config: - subnet: "${BACKEND_SUBNET}" + zbx_net_database: + driver: bridge + driver_opts: + com.docker.network.enable_ipv6: "${DATABASE_NETWORK_ENABLE_IPV6}" + internal: true + ipam: + driver: "${DATABASE_NETWORK_DRIVER}" volumes: snmptraps: diff --git a/docker-compose_v3_ubuntu_mysql_local.yaml b/docker-compose_v3_ubuntu_mysql_local.yaml index e4bd2443f..15448dbb6 100644 --- a/docker-compose_v3_ubuntu_mysql_local.yaml +++ b/docker-compose_v3_ubuntu_mysql_local.yaml @@ -32,6 +32,9 @@ services: - zabbix-build-base zabbix-server: + extends: + file: compose_zabbix_components.yaml + service: zabbix-server-mysql build: context: ./Dockerfiles/server-mysql/${UBUNTU_OS_TAG_SHORT} cache_from: @@ -39,71 +42,17 @@ services: args: BUILD_BASE_IMAGE: ${BUILD_BASE_MYSQL_IMAGE}:${ZABBIX_UBUNTU_IMAGE_TAG}${ZABBIX_LOCAL_IMAGE_TAG_POSTFIX} image: zabbix-server-mysql:${ZABBIX_UBUNTU_IMAGE_TAG}${ZABBIX_LOCAL_IMAGE_TAG_POSTFIX} - init: true - ports: - - "${ZABBIX_SERVER_PORT}:10051" - restart: "${RESTART_POLICY}" - volumes: - - /etc/localtime:/etc/localtime:ro -# - dbsocket:/var/run/mysqld/ - - ${DATA_DIRECTORY}/usr/lib/zabbix/alertscripts:/usr/lib/zabbix/alertscripts:ro - - ${DATA_DIRECTORY}/usr/lib/zabbix/externalscripts:/usr/lib/zabbix/externalscripts:ro - - ${DATA_DIRECTORY}/var/lib/zabbix/dbscripts:/var/lib/zabbix/dbscripts:ro - - ${DATA_DIRECTORY}/var/lib/zabbix/export:/var/lib/zabbix/export:rw - - ${DATA_DIRECTORY}/var/lib/zabbix/modules:/var/lib/zabbix/modules:ro - - ${DATA_DIRECTORY}/var/lib/zabbix/enc:/var/lib/zabbix/enc:ro - - ${DATA_DIRECTORY}/var/lib/zabbix/ssh_keys:/var/lib/zabbix/ssh_keys:ro - - ${DATA_DIRECTORY}/var/lib/zabbix/mibs:/var/lib/zabbix/mibs:ro - - snmptraps:/var/lib/zabbix/snmptraps:rw - 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_VARS_DIRECTORY}/.env_db_mysql - - ${ENV_VARS_DIRECTORY}/.env_srv - secrets: - - MYSQL_USER - - MYSQL_PASSWORD - - MYSQL_ROOT_USER - - MYSQL_ROOT_PASSWORD -# - client-key.pem -# - client-cert.pem -# - root-ca.pem depends_on: - mysql-server - zabbix-build-mysql - networks: - zbx_net_backend: - aliases: - - zabbix-server - - zabbix-server-mysql - zbx_net_frontend: -# devices: -# - "/dev/ttyUSB0:/dev/ttyUSB0" - stop_grace_period: 30s - sysctls: - - net.ipv4.ip_local_port_range=1024 64999 - - 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 MySQL database support" - com.zabbix.company: "Zabbix LLC" - com.zabbix.component: "zabbix-server" - com.zabbix.dbtype: "mysql" com.zabbix.os: "${UBUNTU_OS_TAG}" zabbix-proxy-sqlite3: + extends: + file: compose_zabbix_components.yaml + service: zabbix-proxy-sqlite3 build: context: ./Dockerfiles/proxy-sqlite3/${UBUNTU_OS_TAG_SHORT} cache_from: @@ -111,54 +60,15 @@ services: args: BUILD_BASE_IMAGE: ${BUILD_BASE_SQLITE3_IMAGE}:${ZABBIX_UBUNTU_IMAGE_TAG}${ZABBIX_LOCAL_IMAGE_TAG_POSTFIX} image: zabbix-proxy-sqlite3:${ZABBIX_UBUNTU_IMAGE_TAG}${ZABBIX_LOCAL_IMAGE_TAG_POSTFIX} - init: true - profiles: - - all - ports: - - "${ZABBIX_PROXY_SQLITE3_PORT}:10051" - restart: "${RESTART_POLICY}" - volumes: - - /etc/localtime:/etc/localtime:ro - - ${DATA_DIRECTORY}/usr/lib/zabbix/externalscripts:/usr/lib/zabbix/externalscripts:ro - - ${DATA_DIRECTORY}/var/lib/zabbix/modules:/var/lib/zabbix/modules:ro - - ${DATA_DIRECTORY}/var/lib/zabbix/enc:/var/lib/zabbix/enc:ro - - ${DATA_DIRECTORY}/var/lib/zabbix/ssh_keys:/var/lib/zabbix/ssh_keys:ro - - ${DATA_DIRECTORY}/var/lib/zabbix/mibs:/var/lib/zabbix/mibs:ro - - snmptraps:/var/lib/zabbix/snmptraps:rw - ulimits: - nproc: 65535 - nofile: - soft: 20000 - hard: 40000 - deploy: - resources: - limits: - cpus: '0.70' - memory: 512M - reservations: - cpus: '0.3' - memory: 256M - env_file: - - ${ENV_VARS_DIRECTORY}/.env_prx - - ${ENV_VARS_DIRECTORY}/.env_prx_sqlite3 depends_on: - - zabbix-java-gateway - - zabbix-snmptraps - zabbix-build-sqlite3 - networks: - zbx_net_backend: - aliases: - - zabbix-proxy-sqlite3 - zbx_net_frontend: - stop_grace_period: 30s labels: - com.zabbix.description: "Zabbix proxy with SQLite3 database support" - com.zabbix.company: "Zabbix LLC" - com.zabbix.component: "zabbix-proxy" - com.zabbix.dbtype: "sqlite3" com.zabbix.os: "${UBUNTU_OS_TAG}" zabbix-proxy-mysql: + extends: + file: compose_zabbix_components.yaml + service: zabbix-proxy-mysql build: context: ./Dockerfiles/proxy-mysql/${UBUNTU_OS_TAG_SHORT} cache_from: @@ -166,65 +76,16 @@ services: args: BUILD_BASE_IMAGE: ${BUILD_BASE_MYSQL_IMAGE}:${ZABBIX_UBUNTU_IMAGE_TAG}${ZABBIX_LOCAL_IMAGE_TAG_POSTFIX} image: zabbix-proxy-mysql:${ZABBIX_UBUNTU_IMAGE_TAG}${ZABBIX_LOCAL_IMAGE_TAG_POSTFIX} - init: true - profiles: - - all - ports: - - "${ZABBIX_PROXY_MYSQL_PORT}:10051" - restart: "${RESTART_POLICY}" - volumes: - - /etc/localtime:/etc/localtime:ro -# - dbsocket:/var/run/mysqld/ - - ${DATA_DIRECTORY}/usr/lib/zabbix/externalscripts:/usr/lib/zabbix/externalscripts:ro - - ${DATA_DIRECTORY}/var/lib/zabbix/modules:/var/lib/zabbix/modules:ro - - ${DATA_DIRECTORY}/var/lib/zabbix/enc:/var/lib/zabbix/enc:ro - - ${DATA_DIRECTORY}/var/lib/zabbix/ssh_keys:/var/lib/zabbix/ssh_keys:ro - - ${DATA_DIRECTORY}/var/lib/zabbix/mibs:/var/lib/zabbix/mibs:ro - - snmptraps:/var/lib/zabbix/snmptraps:rw - ulimits: - nproc: 65535 - nofile: - soft: 20000 - hard: 40000 - deploy: - resources: - limits: - cpus: '0.70' - memory: 512M - reservations: - cpus: '0.3' - memory: 256M - env_file: - - ${ENV_VARS_DIRECTORY}/.env_db_mysql_proxy - - ${ENV_VARS_DIRECTORY}/.env_prx - - ${ENV_VARS_DIRECTORY}/.env_prx_mysql depends_on: - mysql-server - - zabbix-java-gateway - - zabbix-snmptraps - zabbix-build-mysql - secrets: - - MYSQL_USER - - MYSQL_PASSWORD - - MYSQL_ROOT_USER - - MYSQL_ROOT_PASSWORD -# - client-key.pem -# - client-cert.pem -# - root-ca.pem - networks: - zbx_net_backend: - aliases: - - zabbix-proxy-mysql - zbx_net_frontend: - stop_grace_period: 30s labels: - com.zabbix.description: "Zabbix proxy with MySQL database support" - com.zabbix.company: "Zabbix LLC" - com.zabbix.component: "zabbix-proxy" - com.zabbix.dbtype: "mysql" com.zabbix.os: "${UBUNTU_OS_TAG}" zabbix-web-apache-mysql: + extends: + file: compose_zabbix_components.yaml + service: zabbix-web-apache-mysql build: context: ./Dockerfiles/web-apache-mysql/${UBUNTU_OS_TAG_SHORT} cache_from: @@ -232,61 +93,16 @@ services: args: BUILD_BASE_IMAGE: ${BUILD_BASE_MYSQL_IMAGE}:${ZABBIX_UBUNTU_IMAGE_TAG}${ZABBIX_LOCAL_IMAGE_TAG_POSTFIX} image: zabbix-web-apache-mysql:${ZABBIX_UBUNTU_IMAGE_TAG}${ZABBIX_LOCAL_IMAGE_TAG_POSTFIX} - profiles: - - all - ports: - - "${ZABBIX_WEB_APACHE_HTTP_PORT}:8080" - - "${ZABBIX_WEB_APACHE_HTTPS_PORT}:8443" - restart: "${RESTART_POLICY}" - volumes: - - /etc/localtime:/etc/localtime:ro -# - dbsocket:/var/run/mysqld/ - - ${DATA_DIRECTORY}/etc/ssl/apache2:/etc/ssl/apache2:ro - - ${DATA_DIRECTORY}/usr/share/zabbix/modules/:/usr/share/zabbix/modules/:ro - deploy: - resources: - limits: - cpus: '0.70' - memory: 512M - reservations: - cpus: '0.5' - memory: 256M - env_file: - - ${ENV_VARS_DIRECTORY}/.env_db_mysql - - ${ENV_VARS_DIRECTORY}/.env_web - secrets: - - MYSQL_USER - - MYSQL_PASSWORD -# - client-key.pem -# - client-cert.pem -# - root-ca.pem depends_on: - mysql-server - - zabbix-server - zabbix-build-mysql - healthcheck: - test: ["CMD", "curl", "-f", "http://localhost:8080/"] - interval: 10s - timeout: 5s - retries: 3 - start_period: 30s - networks: - zbx_net_backend: - aliases: - - zabbix-web-apache-mysql - zbx_net_frontend: - stop_grace_period: 10s - sysctls: - - net.core.somaxconn=65535 labels: - com.zabbix.description: "Zabbix frontend on Apache web-server with MySQL database support" - com.zabbix.company: "Zabbix LLC" - com.zabbix.component: "zabbix-frontend" - com.zabbix.webserver: "apache2" - com.zabbix.dbtype: "mysql" com.zabbix.os: "${UBUNTU_OS_TAG}" zabbix-web-nginx-mysql: + extends: + file: compose_zabbix_components.yaml + service: zabbix-web-nginx-mysql build: context: ./Dockerfiles/web-nginx-mysql/${UBUNTU_OS_TAG_SHORT} cache_from: @@ -294,59 +110,16 @@ services: args: BUILD_BASE_IMAGE: ${BUILD_BASE_MYSQL_IMAGE}:${ZABBIX_UBUNTU_IMAGE_TAG}${ZABBIX_LOCAL_IMAGE_TAG_POSTFIX} image: zabbix-web-nginx-mysql:${ZABBIX_UBUNTU_IMAGE_TAG}${ZABBIX_LOCAL_IMAGE_TAG_POSTFIX} - ports: - - "${ZABBIX_WEB_NGINX_HTTP_PORT}:8080" - - "${ZABBIX_WEB_NGINX_HTTPS_PORT}:8443" - restart: "${RESTART_POLICY}" - volumes: - - /etc/localtime:/etc/localtime:ro -# - dbsocket:/var/run/mysqld/ - - ${DATA_DIRECTORY}/etc/ssl/nginx:/etc/ssl/nginx:ro - - ${DATA_DIRECTORY}/usr/share/zabbix/modules/:/usr/share/zabbix/modules/:ro - deploy: - resources: - limits: - cpus: '0.70' - memory: 512M - reservations: - cpus: '0.5' - memory: 256M - env_file: - - ${ENV_VARS_DIRECTORY}/.env_db_mysql - - ${ENV_VARS_DIRECTORY}/.env_web - secrets: - - MYSQL_USER - - MYSQL_PASSWORD -# - client-key.pem -# - client-cert.pem -# - root-ca.pem depends_on: - mysql-server - - zabbix-server - zabbix-build-mysql - healthcheck: - test: ["CMD", "curl", "-f", "http://localhost:8080/ping"] - interval: 10s - timeout: 5s - retries: 3 - start_period: 30s - networks: - zbx_net_backend: - aliases: - - zabbix-web-nginx-mysql - zbx_net_frontend: - stop_grace_period: 10s - sysctls: - - net.core.somaxconn=65535 labels: - com.zabbix.description: "Zabbix frontend on Nginx web-server with MySQL database support" - com.zabbix.company: "Zabbix LLC" - com.zabbix.component: "zabbix-frontend" - com.zabbix.webserver: "nginx" - com.zabbix.dbtype: "mysql" com.zabbix.os: "${UBUNTU_OS_TAG}" zabbix-agent: + extends: + file: compose_zabbix_components.yaml + service: zabbix-agent build: context: ./Dockerfiles/agent/${UBUNTU_OS_TAG_SHORT} cache_from: @@ -354,47 +127,15 @@ services: args: BUILD_BASE_IMAGE: ${BUILD_BASE_MYSQL_IMAGE}:${ZABBIX_UBUNTU_IMAGE_TAG}${ZABBIX_LOCAL_IMAGE_TAG_POSTFIX} image: zabbix-agent:${ZABBIX_UBUNTU_IMAGE_TAG}${ZABBIX_LOCAL_IMAGE_TAG_POSTFIX} - init: true - profiles: - - full - - all - ports: - - "${ZABBIX_AGENT_PORT}:10050" - restart: "${RESTART_POLICY}" - volumes: - - /etc/localtime:/etc/localtime:ro - - ${DATA_DIRECTORY}/etc/zabbix/zabbix_agentd.d:/etc/zabbix/zabbix_agentd.d:ro - - ${DATA_DIRECTORY}/var/lib/zabbix/modules:/var/lib/zabbix/modules:ro - - ${DATA_DIRECTORY}/var/lib/zabbix/enc:/var/lib/zabbix/enc:ro - - ${DATA_DIRECTORY}/var/lib/zabbix/ssh_keys:/var/lib/zabbix/ssh_keys:ro - deploy: - resources: - limits: - cpus: '0.2' - memory: 128M - reservations: - cpus: '0.1' - memory: 64M - mode: global - env_file: - - ${ENV_VARS_DIRECTORY}/.env_agent - privileged: true - pid: "host" depends_on: - zabbix-build-mysql - networks: - zbx_net_backend: - aliases: - - zabbix-agent - - zabbix-agent-passive - stop_grace_period: 5s labels: - com.zabbix.description: "Zabbix agent" - com.zabbix.company: "Zabbix LLC" - com.zabbix.component: "zabbix-agentd" com.zabbix.os: "${UBUNTU_OS_TAG}" zabbix-java-gateway: + extends: + file: compose_zabbix_components.yaml + service: zabbix-java-gateway build: context: ./Dockerfiles/java-gateway/${UBUNTU_OS_TAG_SHORT} cache_from: @@ -402,126 +143,39 @@ services: args: BUILD_BASE_IMAGE: ${BUILD_BASE_MYSQL_IMAGE}:${ZABBIX_UBUNTU_IMAGE_TAG}${ZABBIX_LOCAL_IMAGE_TAG_POSTFIX} image: zabbix-java-gateway:${ZABBIX_UBUNTU_IMAGE_TAG}${ZABBIX_LOCAL_IMAGE_TAG_POSTFIX} - profiles: - - full - - all - ports: - - "${ZABBIX_JAVA_GATEWAY_PORT}:10052" - restart: "${RESTART_POLICY}" - deploy: - resources: - limits: - cpus: '0.5' - memory: 512M - reservations: - cpus: '0.25' - memory: 256M - env_file: - - ${ENV_VARS_DIRECTORY}/.env_java depends_on: - zabbix-build-mysql - networks: - zbx_net_backend: - aliases: - - zabbix-java-gateway - stop_grace_period: 5s labels: - com.zabbix.description: "Zabbix Java Gateway" - com.zabbix.company: "Zabbix LLC" - com.zabbix.component: "java-gateway" com.zabbix.os: "${UBUNTU_OS_TAG}" zabbix-snmptraps: + extends: + file: compose_zabbix_components.yaml + service: zabbix-snmptraps build: context: ./Dockerfiles/snmptraps/${UBUNTU_OS_TAG_SHORT} cache_from: - "${UBUNTU_CACHE_FROM}" image: zabbix-snmptraps:${ZABBIX_UBUNTU_IMAGE_TAG}${ZABBIX_LOCAL_IMAGE_TAG_POSTFIX} -# Override snmptrapd command arguments to receive SNMP traps by DNS -# It must be done with ZBX_SNMP_TRAP_USE_DNS=true environment variable -# command: /usr/sbin/snmptrapd -C -c /etc/snmp/snmptrapd.conf -Lo -A - profiles: - - full - - all - ports: - - "${ZABBIX_SNMPTRAPS_PORT}:1162/udp" - restart: "${RESTART_POLICY}" - volumes: - - snmptraps:/var/lib/zabbix/snmptraps:rw - deploy: - resources: - limits: - cpus: '0.5' - memory: 256M - reservations: - cpus: '0.25' - memory: 128M - env_file: - - ${ENV_VARS_DIRECTORY}/.env_snmptraps - networks: - zbx_net_frontend: - aliases: - - zabbix-snmptraps - zbx_net_backend: - stop_grace_period: 5s + depends_on: + - zabbix-build-mysql labels: - com.zabbix.description: "Zabbix snmptraps" - com.zabbix.company: "Zabbix LLC" - com.zabbix.component: "snmptraps" com.zabbix.os: "${UBUNTU_OS_TAG}" mysql-server: - image: "${MYSQL_IMAGE}:${MYSQL_IMAGE_TAG}" - command: - - mysqld - - --character-set-server=utf8 - - --collation-server=utf8_bin - - --default-authentication-plugin=mysql_native_password -# - --require-secure-transport -# - --ssl-ca=/run/secrets/root-ca.pem -# - --ssl-cert=/run/secrets/server-cert.pem -# - --ssl-key=/run/secrets/server-key.pem - restart: "${RESTART_POLICY}" - volumes: - - ${DATA_DIRECTORY}/var/lib/mysql:/var/lib/mysql:rw -# - dbsocket:/var/run/mysqld/ - env_file: - - ${ENV_VARS_DIRECTORY}/.env_db_mysql - ports: - - "3306:3306/tcp" - secrets: - - MYSQL_USER - - MYSQL_PASSWORD - - MYSQL_ROOT_PASSWORD -# - server-key.pem -# - server-cert.pem -# - root-ca.pem - stop_grace_period: 1m - networks: - zbx_net_backend: - aliases: - - mysql-server - - zabbix-database - - mysql-database + extends: + file: compose_databases.yaml + service: mysql-server - db_data_mysql: - image: busybox - volumes: - - ${DATA_DIRECTORY}/var/lib/mysql:/var/lib/mysql:rw + db-data-mysql: + extends: + file: compose_databases.yaml + service: db-data-mysql # elasticsearch: -# image: "${ELASTICSEARCH_IMAGE}:${ELASTICSEARCH_IMAGE_TAG}" -# restart: "${RESTART_POLICY}" -# profiles: -# - full -# - all -# environment: -# - transport.host=0.0.0.0 -# - discovery.zen.minimum_master_nodes=1 -# networks: -# zbx_net_backend: -# aliases: -# - elasticsearch +# extends: +# file: compose_databases.yaml +# service: elasticsearch networks: zbx_net_frontend: @@ -541,6 +195,13 @@ networks: driver: "${BACKEND_NETWORK_DRIVER}" config: - subnet: "${BACKEND_SUBNET}" + zbx_net_database: + driver: bridge + driver_opts: + com.docker.network.enable_ipv6: "${DATABASE_NETWORK_ENABLE_IPV6}" + internal: true + ipam: + driver: "${DATABASE_NETWORK_DRIVER}" volumes: snmptraps: diff --git a/docker-compose_v3_ubuntu_pgsql_latest.yaml b/docker-compose_v3_ubuntu_pgsql_latest.yaml index 405fb5d09..053bcf228 100644 --- a/docker-compose_v3_ubuntu_pgsql_latest.yaml +++ b/docker-compose_v3_ubuntu_pgsql_latest.yaml @@ -1,453 +1,101 @@ version: '3.8' services: zabbix-server: + extends: + file: compose_zabbix_components.yaml + service: zabbix-server-pgsql image: "${ZABBIX_SERVER_PGSQL_IMAGE}:${ZABBIX_UBUNTU_IMAGE_TAG}${ZABBIX_IMAGE_TAG_POSTFIX}" - init: true - ports: - - "${ZABBIX_SERVER_PORT}:10051" - restart: "${RESTART_POLICY}" - volumes: - - /etc/localtime:/etc/localtime:ro - - ${DATA_DIRECTORY}/usr/lib/zabbix/alertscripts:/usr/lib/zabbix/alertscripts:ro - - ${DATA_DIRECTORY}/usr/lib/zabbix/externalscripts:/usr/lib/zabbix/externalscripts:ro - - ${DATA_DIRECTORY}/var/lib/zabbix/dbscripts:/var/lib/zabbix/dbscripts:ro - - ${DATA_DIRECTORY}/var/lib/zabbix/export:/var/lib/zabbix/export:rw - - ${DATA_DIRECTORY}/var/lib/zabbix/modules:/var/lib/zabbix/modules:ro - - ${DATA_DIRECTORY}/var/lib/zabbix/enc:/var/lib/zabbix/enc:ro - - ${DATA_DIRECTORY}/var/lib/zabbix/ssh_keys:/var/lib/zabbix/ssh_keys:ro - - ${DATA_DIRECTORY}/var/lib/zabbix/mibs:/var/lib/zabbix/mibs:ro - - snmptraps:/var/lib/zabbix/snmptraps:rw -# - ${ENV_VARS_DIRECTORY}/.ZBX_DB_CA_FILE:/run/secrets/root-ca.pem:ro -# - ${ENV_VARS_DIRECTORY}/.ZBX_DB_CERT_FILE:/run/secrets/client-cert.pem:ro -# - ${ENV_VARS_DIRECTORY}/.ZBX_DB_KEY_FILE:/run/secrets/client-key.pem:ro - 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_VARS_DIRECTORY}/.env_db_pgsql - - ${ENV_VARS_DIRECTORY}/.env_srv - secrets: - - POSTGRES_USER - - POSTGRES_PASSWORD depends_on: - postgres-server - networks: - zbx_net_backend: - aliases: - - zabbix-server - - zabbix-server-pgsql - zbx_net_frontend: -# devices: -# - "/dev/ttyUSB0:/dev/ttyUSB0" - stop_grace_period: 30s - sysctls: - - net.ipv4.ip_local_port_range=1024 64999 - - 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_OS_TAG}" zabbix-proxy-sqlite3: + extends: + file: compose_zabbix_components.yaml + service: zabbix-proxy-sqlite3 image: "${ZABBIX_PROXY_SQLITE3_IMAGE}:${ZABBIX_UBUNTU_IMAGE_TAG}${ZABBIX_IMAGE_TAG_POSTFIX}" - init: true - profiles: - - all - ports: - - "${ZABBIX_PROXY_SQLITE3_PORT}:10051" - restart: "${RESTART_POLICY}" - volumes: - - /etc/localtime:/etc/localtime:ro - - ${DATA_DIRECTORY}/usr/lib/zabbix/externalscripts:/usr/lib/zabbix/externalscripts:ro - - ${DATA_DIRECTORY}/var/lib/zabbix/modules:/var/lib/zabbix/modules:ro - - ${DATA_DIRECTORY}/var/lib/zabbix/enc:/var/lib/zabbix/enc:ro - - ${DATA_DIRECTORY}/var/lib/zabbix/ssh_keys:/var/lib/zabbix/ssh_keys:ro - - ${DATA_DIRECTORY}/var/lib/zabbix/mibs:/var/lib/zabbix/mibs:ro - - snmptraps:/var/lib/zabbix/snmptraps:rw - ulimits: - nproc: 65535 - nofile: - soft: 20000 - hard: 40000 - deploy: - resources: - limits: - cpus: '0.70' - memory: 512M - reservations: - cpus: '0.3' - memory: 256M - env_file: - - ${ENV_VARS_DIRECTORY}/.env_prx - - ${ENV_VARS_DIRECTORY}/.env_prx_sqlite3 - depends_on: - - zabbix-java-gateway - - zabbix-snmptraps - networks: - zbx_net_backend: - aliases: - - zabbix-proxy-sqlite3 - zbx_net_frontend: - stop_grace_period: 30s labels: - com.zabbix.description: "Zabbix proxy with SQLite3 database support" - com.zabbix.company: "Zabbix LLC" - com.zabbix.component: "zabbix-proxy" - com.zabbix.dbtype: "sqlite3" com.zabbix.os: "${UBUNTU_OS_TAG}" zabbix-proxy-mysql: + extends: + file: compose_zabbix_components.yaml + service: zabbix-proxy-mysql image: "${ZABBIX_PROXY_MYSQL_IMAGE}:${ZABBIX_UBUNTU_IMAGE_TAG}${ZABBIX_IMAGE_TAG_POSTFIX}" - init: true - profiles: - - all - ports: - - "${ZABBIX_PROXY_MYSQL_PORT}:10051" - restart: "${RESTART_POLICY}" - volumes: - - /etc/localtime:/etc/localtime:ro - - ${DATA_DIRECTORY}/usr/lib/zabbix/externalscripts:/usr/lib/zabbix/externalscripts:ro - - ${DATA_DIRECTORY}/var/lib/zabbix/modules:/var/lib/zabbix/modules:ro - - ${DATA_DIRECTORY}/var/lib/zabbix/enc:/var/lib/zabbix/enc:ro - - ${DATA_DIRECTORY}/var/lib/zabbix/ssh_keys:/var/lib/zabbix/ssh_keys:ro - - ${DATA_DIRECTORY}/var/lib/zabbix/mibs:/var/lib/zabbix/mibs:ro - - snmptraps:/var/lib/zabbix/snmptraps:rw - ulimits: - nproc: 65535 - nofile: - soft: 20000 - hard: 40000 - deploy: - resources: - limits: - cpus: '0.70' - memory: 512M - reservations: - cpus: '0.3' - memory: 256M - env_file: - - ${ENV_VARS_DIRECTORY}/.env_db_mysql_proxy - - ${ENV_VARS_DIRECTORY}/.env_prx - - ${ENV_VARS_DIRECTORY}/.env_prx_mysql - secrets: - - MYSQL_USER - - MYSQL_PASSWORD - - MYSQL_ROOT_USER - - MYSQL_ROOT_PASSWORD depends_on: - mysql-server - - zabbix-java-gateway - - zabbix-snmptraps - networks: - zbx_net_backend: - aliases: - - zabbix-proxy-mysql - zbx_net_frontend: - stop_grace_period: 30s labels: - com.zabbix.description: "Zabbix proxy with MySQL database support" - com.zabbix.company: "Zabbix LLC" - com.zabbix.component: "zabbix-proxy" - com.zabbix.dbtype: "mysql" com.zabbix.os: "${UBUNTU_OS_TAG}" zabbix-web-apache-pgsql: + extends: + file: compose_zabbix_components.yaml + service: zabbix-web-apache-pgsql image: "${ZABBIX_WEB_APACHE_PGSQL_IMAGE}:${ZABBIX_UBUNTU_IMAGE_TAG}${ZABBIX_IMAGE_TAG_POSTFIX}" - profiles: - - all - ports: - - "${ZABBIX_WEB_APACHE_HTTP_PORT}:8080" - - "${ZABBIX_WEB_APACHE_HTTPS_PORT}:8443" - restart: "${RESTART_POLICY}" - volumes: - - /etc/localtime:/etc/localtime:ro - - ${DATA_DIRECTORY}/etc/ssl/apache2:/etc/ssl/apache2:ro - - ${DATA_DIRECTORY}/usr/share/zabbix/modules/:/usr/share/zabbix/modules/:ro -# - ${ENV_VARS_DIRECTORY}/.ZBX_DB_CA_FILE:/run/secrets/root-ca.pem:ro -# - ${ENV_VARS_DIRECTORY}/.ZBX_DB_CERT_FILE:/run/secrets/client-cert.pem:ro -# - ${ENV_VARS_DIRECTORY}/.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_VARS_DIRECTORY}/.env_db_pgsql - - ${ENV_VARS_DIRECTORY}/.env_web - secrets: - - POSTGRES_USER - - POSTGRES_PASSWORD depends_on: - postgres-server - - zabbix-server - healthcheck: - test: ["CMD", "curl", "-f", "http://localhost:8080/ping"] - interval: 10s - timeout: 5s - retries: 3 - start_period: 30s - networks: - zbx_net_backend: - aliases: - - zabbix-web-apache-pgsql - zbx_net_frontend: - stop_grace_period: 10s - sysctls: - - net.core.somaxconn=65535 labels: - com.zabbix.description: "Zabbix frontend on Apache web-server with PostgreSQL database support" - com.zabbix.company: "Zabbix LLC" - com.zabbix.component: "zabbix-frontend" - com.zabbix.webserver: "apache2" - com.zabbix.dbtype: "pgsql" com.zabbix.os: "${UBUNTU_OS_TAG}" zabbix-web-nginx-pgsql: + extends: + file: compose_zabbix_components.yaml + service: zabbix-web-nginx-pgsql image: "${ZABBIX_WEB_NGINX_PGSQL_IMAGE}:${ZABBIX_UBUNTU_IMAGE_TAG}${ZABBIX_IMAGE_TAG_POSTFIX}" - ports: - - "${ZABBIX_WEB_NGINX_HTTP_PORT}:8080" - - "${ZABBIX_WEB_NGINX_HTTPS_PORT}:8443" - restart: "${RESTART_POLICY}" - volumes: - - /etc/localtime:/etc/localtime:ro - - ${DATA_DIRECTORY}/etc/ssl/nginx:/etc/ssl/nginx:ro - - ${DATA_DIRECTORY}/usr/share/zabbix/modules/:/usr/share/zabbix/modules/:ro -# - ${ENV_VARS_DIRECTORY}/.ZBX_DB_CA_FILE:/run/secrets/root-ca.pem:ro -# - ${ENV_VARS_DIRECTORY}/.ZBX_DB_CERT_FILE:/run/secrets/client-cert.pem:ro -# - ${ENV_VARS_DIRECTORY}/.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_VARS_DIRECTORY}/.env_db_pgsql - - ${ENV_VARS_DIRECTORY}/.env_web - secrets: - - POSTGRES_USER - - POSTGRES_PASSWORD depends_on: - postgres-server - - zabbix-server - healthcheck: - test: ["CMD", "curl", "-f", "http://localhost:8080/ping"] - interval: 10s - timeout: 5s - retries: 3 - start_period: 30s - networks: - zbx_net_backend: - aliases: - - zabbix-web-nginx-pgsql - 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_OS_TAG}" zabbix-agent: + extends: + file: compose_zabbix_components.yaml + service: zabbix-agent image: "${ZABBIX_AGENT_IMAGE}:${ZABBIX_UBUNTU_IMAGE_TAG}${ZABBIX_IMAGE_TAG_POSTFIX}" - init: true - profiles: - - full - - all - ports: - - "${ZABBIX_AGENT_PORT}:10050" - restart: "${RESTART_POLICY}" - volumes: - - /etc/localtime:/etc/localtime:ro - - ${DATA_DIRECTORY}/etc/zabbix/zabbix_agentd.d:/etc/zabbix/zabbix_agentd.d:ro - - ${DATA_DIRECTORY}/var/lib/zabbix/modules:/var/lib/zabbix/modules:ro - - ${DATA_DIRECTORY}/var/lib/zabbix/enc:/var/lib/zabbix/enc:ro - - ${DATA_DIRECTORY}/var/lib/zabbix/ssh_keys:/var/lib/zabbix/ssh_keys:ro - deploy: - resources: - limits: - cpus: '0.2' - memory: 128M - reservations: - cpus: '0.1' - memory: 64M - mode: global - env_file: - - ${ENV_VARS_DIRECTORY}/.env_agent - privileged: true - pid: "host" - networks: - zbx_net_backend: - aliases: - - zabbix-agent - - zabbix-agent-passive - stop_grace_period: 5s labels: - com.zabbix.description: "Zabbix agent" - com.zabbix.company: "Zabbix LLC" - com.zabbix.component: "zabbix-agentd" com.zabbix.os: "${UBUNTU_OS_TAG}" zabbix-java-gateway: + extends: + file: compose_zabbix_components.yaml + service: zabbix-java-gateway image: "${ZABBIX_JAVA_GATEWAY_IMAGE}:${ZABBIX_UBUNTU_IMAGE_TAG}${ZABBIX_IMAGE_TAG_POSTFIX}" - profiles: - - full - - all - ports: - - "${ZABBIX_JAVA_GATEWAY_PORT}:10052" - restart: "${RESTART_POLICY}" - deploy: - resources: - limits: - cpus: '0.5' - memory: 512M - reservations: - cpus: '0.25' - memory: 256M - env_file: - - ${ENV_VARS_DIRECTORY}/.env_java - networks: - zbx_net_backend: - aliases: - - zabbix-java-gateway - stop_grace_period: 5s labels: - com.zabbix.description: "Zabbix Java Gateway" - com.zabbix.company: "Zabbix LLC" - com.zabbix.component: "java-gateway" com.zabbix.os: "${UBUNTU_OS_TAG}" zabbix-snmptraps: + extends: + file: compose_zabbix_components.yaml + service: zabbix-snmptraps image: "${ZABBIX_SNMPTRAPS_IMAGE}:${ZABBIX_UBUNTU_IMAGE_TAG}${ZABBIX_IMAGE_TAG_POSTFIX}" -# Override snmptrapd command arguments to receive SNMP traps by DNS -# It must be done with ZBX_SNMP_TRAP_USE_DNS=true environment variable -# command: /usr/sbin/snmptrapd -C -c /etc/snmp/snmptrapd.conf -Lo -A - profiles: - - full - - all - ports: - - "${ZABBIX_SNMPTRAPS_PORT}:1162/udp" - restart: "${RESTART_POLICY}" - volumes: - - snmptraps:/var/lib/zabbix/snmptraps:rw - deploy: - resources: - limits: - cpus: '0.5' - memory: 256M - reservations: - cpus: '0.25' - memory: 128M - env_file: - - ${ENV_VARS_DIRECTORY}/.env_snmptraps - networks: - zbx_net_frontend: - aliases: - - zabbix-snmptraps - zbx_net_backend: - stop_grace_period: 5s labels: - com.zabbix.description: "Zabbix snmptraps" - com.zabbix.company: "Zabbix LLC" - com.zabbix.component: "snmptraps" com.zabbix.os: "${UBUNTU_OS_TAG}" mysql-server: - image: "${MYSQL_IMAGE}:${MYSQL_IMAGE_TAG}" - profiles: - - all - command: - - mysqld - - --character-set-server=utf8 - - --collation-server=utf8_bin - - --default-authentication-plugin=mysql_native_password - restart: "${RESTART_POLICY}" - volumes: - - ${DATA_DIRECTORY}/var/lib/mysql:/var/lib/mysql:rw - env_file: - - ${ENV_VARS_DIRECTORY}/.env_db_mysql - secrets: - - MYSQL_USER - - MYSQL_PASSWORD - - MYSQL_ROOT_PASSWORD - stop_grace_period: 1m - networks: - zbx_net_backend: - aliases: - - mysql-server - - zabbix-database - - mysql-database + extends: + file: compose_databases.yaml + service: mysql-server postgres-server: - image: "${POSTGRESQL_IMAGE}:${POSTGRESQL_IMAGE_TAG}" -# 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 - restart: "${RESTART_POLICY}" - volumes: - - ${DATA_DIRECTORY}/var/lib/postgresql/data:/var/lib/postgresql/data:rw - - ${ENV_VARS_DIRECTORY}/.ZBX_DB_CA_FILE:/run/secrets/root-ca.pem:ro - - ${ENV_VARS_DIRECTORY}/.ZBX_DB_CERT_FILE:/run/secrets/server-cert.pem:ro - - ${ENV_VARS_DIRECTORY}/.ZBX_DB_KEY_FILE:/run/secrets/server-key.pem:ro - env_file: - - ${ENV_VARS_DIRECTORY}/.env_db_pgsql - secrets: - - POSTGRES_USER - - POSTGRES_PASSWORD - stop_grace_period: 1m - networks: - zbx_net_backend: - aliases: - - postgres-server - - pgsql-server - - pgsql-database + extends: + file: compose_databases.yaml + service: postgres-server - db_data_mysql: - image: busybox - profiles: - - all - volumes: - - ${DATA_DIRECTORY}/var/lib/mysql:/var/lib/mysql:rw + db-data-mysql: + extends: + file: compose_databases.yaml + service: db-data-mysql - db_data_pgsql: - image: busybox - volumes: - - ${DATA_DIRECTORY}/var/lib/postgresql/data:/var/lib/postgresql/data:rw + db-data-pgsql: + extends: + file: compose_databases.yaml + service: db-data-pgsql # elasticsearch: -# image: "${ELASTICSEARCH_IMAGE}:${ELASTICSEARCH_IMAGE_TAG}" -# restart: "${RESTART_POLICY}" -# profiles: -# - full -# - all -# environment: -# - transport.host=0.0.0.0 -# - discovery.zen.minimum_master_nodes=1 -# networks: -# zbx_net_backend: -# aliases: -# - elasticsearch +# extends: +# file: compose_databases.yaml +# service: elasticsearch networks: zbx_net_frontend: @@ -467,9 +115,17 @@ networks: driver: "${BACKEND_NETWORK_DRIVER}" config: - subnet: "${BACKEND_SUBNET}" + zbx_net_database: + driver: bridge + driver_opts: + com.docker.network.enable_ipv6: "${DATABASE_NETWORK_ENABLE_IPV6}" + internal: true + ipam: + driver: "${DATABASE_NETWORK_DRIVER}" volumes: snmptraps: +# dbsocket: secrets: MYSQL_USER: diff --git a/docker-compose_v3_ubuntu_pgsql_local.yaml b/docker-compose_v3_ubuntu_pgsql_local.yaml index 2b4780806..cda1b2c47 100644 --- a/docker-compose_v3_ubuntu_pgsql_local.yaml +++ b/docker-compose_v3_ubuntu_pgsql_local.yaml @@ -45,6 +45,9 @@ services: - zabbix-build-base zabbix-server: + extends: + file: compose_zabbix_components.yaml + service: zabbix-server-pgsql build: context: ./Dockerfiles/server-pgsql/${UBUNTU_OS_TAG_SHORT} cache_from: @@ -52,68 +55,16 @@ services: args: BUILD_BASE_IMAGE: ${BUILD_BASE_PGSQL_IMAGE}:${ZABBIX_UBUNTU_IMAGE_TAG}${ZABBIX_LOCAL_IMAGE_TAG_POSTFIX} image: zabbix-server-pgsql:${ZABBIX_UBUNTU_IMAGE_TAG}${ZABBIX_LOCAL_IMAGE_TAG_POSTFIX} - init: true - ports: - - "${ZABBIX_SERVER_PORT}:10051" - restart: "${RESTART_POLICY}" - volumes: - - /etc/localtime:/etc/localtime:ro - - ${DATA_DIRECTORY}/usr/lib/zabbix/alertscripts:/usr/lib/zabbix/alertscripts:ro - - ${DATA_DIRECTORY}/usr/lib/zabbix/externalscripts:/usr/lib/zabbix/externalscripts:ro - - ${DATA_DIRECTORY}/var/lib/zabbix/dbscripts:/var/lib/zabbix/dbscripts:ro - - ${DATA_DIRECTORY}/var/lib/zabbix/export:/var/lib/zabbix/export:rw - - ${DATA_DIRECTORY}/var/lib/zabbix/modules:/var/lib/zabbix/modules:ro - - ${DATA_DIRECTORY}/var/lib/zabbix/enc:/var/lib/zabbix/enc:ro - - ${DATA_DIRECTORY}/var/lib/zabbix/ssh_keys:/var/lib/zabbix/ssh_keys:ro - - ${DATA_DIRECTORY}/var/lib/zabbix/mibs:/var/lib/zabbix/mibs:ro - - snmptraps:/var/lib/zabbix/snmptraps:rw -# - ${ENV_VARS_DIRECTORY}/.ZBX_DB_CA_FILE:/run/secrets/root-ca.pem:ro -# - ${ENV_VARS_DIRECTORY}/.ZBX_DB_CERT_FILE:/run/secrets/client-cert.pem:ro -# - ${ENV_VARS_DIRECTORY}/.ZBX_DB_KEY_FILE:/run/secrets/client-key.pem:ro - 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_VARS_DIRECTORY}/.env_db_pgsql - - ${ENV_VARS_DIRECTORY}/.env_srv - secrets: - - POSTGRES_USER - - POSTGRES_PASSWORD depends_on: - postgres-server - zabbix-build-pgsql - networks: - zbx_net_backend: - aliases: - - zabbix-server - - zabbix-server-pgsql - zbx_net_frontend: -# devices: -# - "/dev/ttyUSB0:/dev/ttyUSB0" - stop_grace_period: 30s - sysctls: - - net.ipv4.ip_local_port_range=1024 64999 - - 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_OS_TAG}" zabbix-proxy-sqlite3: + extends: + file: compose_zabbix_components.yaml + service: zabbix-proxy-sqlite3 build: context: ./Dockerfiles/proxy-sqlite3/${UBUNTU_OS_TAG_SHORT} cache_from: @@ -121,54 +72,15 @@ services: args: BUILD_BASE_IMAGE: ${BUILD_BASE_SQLITE3_IMAGE}:${ZABBIX_UBUNTU_IMAGE_TAG}${ZABBIX_LOCAL_IMAGE_TAG_POSTFIX} image: zabbix-proxy-sqlite3:${ZABBIX_UBUNTU_IMAGE_TAG}${ZABBIX_LOCAL_IMAGE_TAG_POSTFIX} - init: true - profiles: - - all - ports: - - "${ZABBIX_PROXY_SQLITE3_PORT}:10051" - restart: "${RESTART_POLICY}" - volumes: - - /etc/localtime:/etc/localtime:ro - - ${DATA_DIRECTORY}/usr/lib/zabbix/externalscripts:/usr/lib/zabbix/externalscripts:ro - - ${DATA_DIRECTORY}/var/lib/zabbix/modules:/var/lib/zabbix/modules:ro - - ${DATA_DIRECTORY}/var/lib/zabbix/enc:/var/lib/zabbix/enc:ro - - ${DATA_DIRECTORY}/var/lib/zabbix/ssh_keys:/var/lib/zabbix/ssh_keys:ro - - ${DATA_DIRECTORY}/var/lib/zabbix/mibs:/var/lib/zabbix/mibs:ro - - snmptraps:/var/lib/zabbix/snmptraps:rw - ulimits: - nproc: 65535 - nofile: - soft: 20000 - hard: 40000 - deploy: - resources: - limits: - cpus: '0.70' - memory: 512M - reservations: - cpus: '0.3' - memory: 256M - env_file: - - ${ENV_VARS_DIRECTORY}/.env_prx - - ${ENV_VARS_DIRECTORY}/.env_prx_sqlite3 depends_on: - - zabbix-java-gateway - - zabbix-snmptraps - zabbix-build-sqlite3 - networks: - zbx_net_backend: - aliases: - - zabbix-proxy-sqlite3 - zbx_net_frontend: - stop_grace_period: 30s labels: - com.zabbix.description: "Zabbix proxy with SQLite3 database support" - com.zabbix.company: "Zabbix LLC" - com.zabbix.component: "zabbix-proxy" - com.zabbix.dbtype: "sqlite3" com.zabbix.os: "${UBUNTU_OS_TAG}" zabbix-proxy-mysql: + extends: + file: compose_zabbix_components.yaml + service: zabbix-proxy-mysql build: context: ./Dockerfiles/proxy-mysql/${UBUNTU_OS_TAG_SHORT} cache_from: @@ -176,61 +88,16 @@ services: args: BUILD_BASE_IMAGE: ${BUILD_BASE_MYSQL_IMAGE}:${ZABBIX_UBUNTU_IMAGE_TAG}${ZABBIX_LOCAL_IMAGE_TAG_POSTFIX} image: zabbix-proxy-mysql:${ZABBIX_UBUNTU_IMAGE_TAG}${ZABBIX_LOCAL_IMAGE_TAG_POSTFIX} - init: true - profiles: - - all - ports: - - "${ZABBIX_PROXY_MYSQL_PORT}:10051" - restart: "${RESTART_POLICY}" - volumes: - - /etc/localtime:/etc/localtime:ro - - ${DATA_DIRECTORY}/usr/lib/zabbix/externalscripts:/usr/lib/zabbix/externalscripts:ro - - ${DATA_DIRECTORY}/var/lib/zabbix/modules:/var/lib/zabbix/modules:ro - - ${DATA_DIRECTORY}/var/lib/zabbix/enc:/var/lib/zabbix/enc:ro - - ${DATA_DIRECTORY}/var/lib/zabbix/ssh_keys:/var/lib/zabbix/ssh_keys:ro - - ${DATA_DIRECTORY}/var/lib/zabbix/mibs:/var/lib/zabbix/mibs:ro - - snmptraps:/var/lib/zabbix/snmptraps:rw - ulimits: - nproc: 65535 - nofile: - soft: 20000 - hard: 40000 - deploy: - resources: - limits: - cpus: '0.70' - memory: 512M - reservations: - cpus: '0.3' - memory: 256M - env_file: - - ${ENV_VARS_DIRECTORY}/.env_db_mysql_proxy - - ${ENV_VARS_DIRECTORY}/.env_prx - - ${ENV_VARS_DIRECTORY}/.env_prx_mysql - secrets: - - MYSQL_USER - - MYSQL_PASSWORD - - MYSQL_ROOT_USER - - MYSQL_ROOT_PASSWORD depends_on: - mysql-server - - zabbix-java-gateway - - zabbix-snmptraps - zabbix-build-mysql - networks: - zbx_net_backend: - aliases: - - zabbix-proxy-mysql - zbx_net_frontend: - stop_grace_period: 30s labels: - com.zabbix.description: "Zabbix proxy with MySQL database support" - com.zabbix.company: "Zabbix LLC" - com.zabbix.component: "zabbix-proxy" - com.zabbix.dbtype: "mysql" com.zabbix.os: "${UBUNTU_OS_TAG}" zabbix-web-apache-pgsql: + extends: + file: compose_zabbix_components.yaml + service: zabbix-web-apache-pgsql build: context: ./Dockerfiles/web-apache-pgsql/${UBUNTU_OS_TAG_SHORT} cache_from: @@ -238,60 +105,16 @@ services: args: BUILD_BASE_IMAGE: ${BUILD_BASE_PGSQL_IMAGE}:${ZABBIX_UBUNTU_IMAGE_TAG}${ZABBIX_LOCAL_IMAGE_TAG_POSTFIX} image: zabbix-web-apache-pgsql:${ZABBIX_UBUNTU_IMAGE_TAG}${ZABBIX_LOCAL_IMAGE_TAG_POSTFIX} - profiles: - - all - ports: - - "${ZABBIX_WEB_APACHE_HTTP_PORT}:8080" - - "${ZABBIX_WEB_APACHE_HTTPS_PORT}:8443" - restart: "${RESTART_POLICY}" - volumes: - - /etc/localtime:/etc/localtime:ro - - ${DATA_DIRECTORY}/etc/ssl/apache2:/etc/ssl/apache2:ro - - ${DATA_DIRECTORY}/usr/share/zabbix/modules/:/usr/share/zabbix/modules/:ro -# - ${ENV_VARS_DIRECTORY}/.ZBX_DB_CA_FILE:/run/secrets/root-ca.pem:ro -# - ${ENV_VARS_DIRECTORY}/.ZBX_DB_CERT_FILE:/run/secrets/client-cert.pem:ro -# - ${ENV_VARS_DIRECTORY}/.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_VARS_DIRECTORY}/.env_db_pgsql - - ${ENV_VARS_DIRECTORY}/.env_web - secrets: - - POSTGRES_USER - - POSTGRES_PASSWORD depends_on: - postgres-server - - zabbix-server - zabbix-build-pgsql - healthcheck: - test: ["CMD", "curl", "-f", "http://localhost:8080/"] - interval: 10s - timeout: 5s - retries: 3 - start_period: 30s - networks: - zbx_net_backend: - aliases: - - zabbix-web-apache-pgsql - zbx_net_frontend: - stop_grace_period: 10s - sysctls: - - net.core.somaxconn=65535 labels: - com.zabbix.description: "Zabbix frontend on Apache web-server with PostgreSQL database support" - com.zabbix.company: "Zabbix LLC" - com.zabbix.component: "zabbix-frontend" - com.zabbix.webserver: "apache2" - com.zabbix.dbtype: "pgsql" com.zabbix.os: "${UBUNTU_OS_TAG}" zabbix-web-nginx-pgsql: + extends: + file: compose_zabbix_components.yaml + service: zabbix-web-nginx-pgsql build: context: ./Dockerfiles/web-nginx-pgsql/${UBUNTU_OS_TAG_SHORT} cache_from: @@ -299,254 +122,82 @@ services: args: BUILD_BASE_IMAGE: ${BUILD_BASE_PGSQL_IMAGE}:${ZABBIX_UBUNTU_IMAGE_TAG}${ZABBIX_LOCAL_IMAGE_TAG_POSTFIX} image: zabbix-web-nginx-pgsql:${ZABBIX_UBUNTU_IMAGE_TAG}${ZABBIX_LOCAL_IMAGE_TAG_POSTFIX} - ports: - - "${ZABBIX_WEB_NGINX_HTTP_PORT}:8080" - - "${ZABBIX_WEB_NGINX_HTTPS_PORT}:8443" - restart: "${RESTART_POLICY}" - volumes: - - /etc/localtime:/etc/localtime:ro - - ${DATA_DIRECTORY}/etc/ssl/nginx:/etc/ssl/nginx:ro - - ${DATA_DIRECTORY}/usr/share/zabbix/modules/:/usr/share/zabbix/modules/:ro -# - ${ENV_VARS_DIRECTORY}/.ZBX_DB_CA_FILE:/run/secrets/root-ca.pem:ro -# - ${ENV_VARS_DIRECTORY}/.ZBX_DB_CERT_FILE:/run/secrets/client-cert.pem:ro -# - ${ENV_VARS_DIRECTORY}/.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_VARS_DIRECTORY}/.env_db_pgsql - - ${ENV_VARS_DIRECTORY}/.env_web - secrets: - - POSTGRES_USER - - POSTGRES_PASSWORD depends_on: - postgres-server - - zabbix-server - zabbix-build-pgsql - healthcheck: - test: ["CMD", "curl", "-f", "http://localhost:8080/ping"] - interval: 10s - timeout: 5s - retries: 3 - start_period: 30s - networks: - zbx_net_backend: - aliases: - - zabbix-web-nginx-pgsql - 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_OS_TAG}" zabbix-agent: + extends: + file: compose_zabbix_components.yaml + service: zabbix-agent build: context: ./Dockerfiles/agent/${UBUNTU_OS_TAG_SHORT} cache_from: - "${UBUNTU_CACHE_FROM}" args: - BUILD_BASE_IMAGE: ${BUILD_BASE_PGSQL_IMAGE}:${ZABBIX_UBUNTU_IMAGE_TAG}${ZABBIX_LOCAL_IMAGE_TAG_POSTFIX} + BUILD_BASE_IMAGE: ${BUILD_BASE_MYSQL_IMAGE}:${ZABBIX_UBUNTU_IMAGE_TAG}${ZABBIX_LOCAL_IMAGE_TAG_POSTFIX} image: zabbix-agent:${ZABBIX_UBUNTU_IMAGE_TAG}${ZABBIX_LOCAL_IMAGE_TAG_POSTFIX} - init: true - profiles: - - full - - all - ports: - - "${ZABBIX_AGENT_PORT}:10050" - restart: "${RESTART_POLICY}" - volumes: - - /etc/localtime:/etc/localtime:ro - - ${DATA_DIRECTORY}/etc/zabbix/zabbix_agentd.d:/etc/zabbix/zabbix_agentd.d:ro - - ${DATA_DIRECTORY}/var/lib/zabbix/modules:/var/lib/zabbix/modules:ro - - ${DATA_DIRECTORY}/var/lib/zabbix/enc:/var/lib/zabbix/enc:ro - - ${DATA_DIRECTORY}/var/lib/zabbix/ssh_keys:/var/lib/zabbix/ssh_keys:ro - deploy: - resources: - limits: - cpus: '0.2' - memory: 128M - reservations: - cpus: '0.1' - memory: 64M - mode: global - env_file: - - ${ENV_VARS_DIRECTORY}/.env_agent - privileged: true - pid: "host" depends_on: - zabbix-build-pgsql - networks: - zbx_net_backend: - aliases: - - zabbix-agent - - zabbix-agent-passive - stop_grace_period: 5s labels: - com.zabbix.description: "Zabbix agent" - com.zabbix.company: "Zabbix LLC" - com.zabbix.component: "zabbix-agentd" com.zabbix.os: "${UBUNTU_OS_TAG}" zabbix-java-gateway: + extends: + file: compose_zabbix_components.yaml + service: zabbix-java-gateway build: context: ./Dockerfiles/java-gateway/${UBUNTU_OS_TAG_SHORT} cache_from: - "${UBUNTU_CACHE_FROM}" args: - BUILD_BASE_IMAGE: ${BUILD_BASE_PGSQL_IMAGE}:${ZABBIX_UBUNTU_IMAGE_TAG}${ZABBIX_LOCAL_IMAGE_TAG_POSTFIX} + BUILD_BASE_IMAGE: ${BUILD_BASE_MYSQL_IMAGE}:${ZABBIX_UBUNTU_IMAGE_TAG}${ZABBIX_LOCAL_IMAGE_TAG_POSTFIX} image: zabbix-java-gateway:${ZABBIX_UBUNTU_IMAGE_TAG}${ZABBIX_LOCAL_IMAGE_TAG_POSTFIX} - profiles: - - full - - all - ports: - - "${ZABBIX_JAVA_GATEWAY_PORT}:10052" - restart: "${RESTART_POLICY}" - deploy: - resources: - limits: - cpus: '0.5' - memory: 512M - reservations: - cpus: '0.25' - memory: 256M - env_file: - - ${ENV_VARS_DIRECTORY}/.env_java depends_on: - zabbix-build-pgsql - networks: - zbx_net_backend: - aliases: - - zabbix-java-gateway - stop_grace_period: 5s labels: - com.zabbix.description: "Zabbix Java Gateway" - com.zabbix.company: "Zabbix LLC" - com.zabbix.component: "java-gateway" com.zabbix.os: "${UBUNTU_OS_TAG}" zabbix-snmptraps: + extends: + file: compose_zabbix_components.yaml + service: zabbix-snmptraps build: context: ./Dockerfiles/snmptraps/${UBUNTU_OS_TAG_SHORT} cache_from: - "${UBUNTU_CACHE_FROM}" image: zabbix-snmptraps:${ZABBIX_UBUNTU_IMAGE_TAG}${ZABBIX_LOCAL_IMAGE_TAG_POSTFIX} -# Override snmptrapd command arguments to receive SNMP traps by DNS -# It must be done with ZBX_SNMP_TRAP_USE_DNS=true environment variable -# command: /usr/sbin/snmptrapd -C -c /etc/snmp/snmptrapd.conf -Lo -A - profiles: - - full - - all - ports: - - "${ZABBIX_SNMPTRAPS_PORT}:1162/udp" - restart: "${RESTART_POLICY}" - volumes: - - snmptraps:/var/lib/zabbix/snmptraps:rw - deploy: - resources: - limits: - cpus: '0.5' - memory: 256M - reservations: - cpus: '0.25' - memory: 128M - env_file: - - ${ENV_VARS_DIRECTORY}/.env_snmptraps - networks: - zbx_net_frontend: - aliases: - - zabbix-snmptraps - zbx_net_backend: - stop_grace_period: 5s + depends_on: + - zabbix-build-pgsql labels: - com.zabbix.description: "Zabbix snmptraps" - com.zabbix.company: "Zabbix LLC" - com.zabbix.component: "snmptraps" com.zabbix.os: "${UBUNTU_OS_TAG}" mysql-server: - image: "${MYSQL_IMAGE}:${MYSQL_IMAGE_TAG}" - profiles: - - all - command: - - mysqld - - --character-set-server=utf8 - - --collation-server=utf8_bin - - --default-authentication-plugin=mysql_native_password - restart: "${RESTART_POLICY}" - volumes: - - ${DATA_DIRECTORY}/var/lib/mysql:/var/lib/mysql:rw - env_file: - - ${ENV_VARS_DIRECTORY}/.env_db_mysql - secrets: - - MYSQL_USER - - MYSQL_PASSWORD - - MYSQL_ROOT_PASSWORD - stop_grace_period: 1m - networks: - zbx_net_backend: - aliases: - - mysql-server - - zabbix-database - - mysql-database + extends: + file: compose_databases.yaml + service: mysql-server postgres-server: - image: "${POSTGRESQL_IMAGE}:${POSTGRESQL_IMAGE_TAG}" -# 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 - restart: "${RESTART_POLICY}" - volumes: - - ${DATA_DIRECTORY}/var/lib/postgresql/data:/var/lib/postgresql/data:rw - - ${ENV_VARS_DIRECTORY}/.ZBX_DB_CA_FILE:/run/secrets/root-ca.pem:ro - - ${ENV_VARS_DIRECTORY}/.ZBX_DB_CERT_FILE:/run/secrets/server-cert.pem:ro - - ${ENV_VARS_DIRECTORY}/.ZBX_DB_KEY_FILE:/run/secrets/server-key.pem:ro - env_file: - - ${ENV_VARS_DIRECTORY}/.env_db_pgsql - secrets: - - POSTGRES_USER - - POSTGRES_PASSWORD - stop_grace_period: 1m - networks: - zbx_net_backend: - aliases: - - postgres-server - - pgsql-server - - pgsql-database + extends: + file: compose_databases.yaml + service: postgres-server - db_data_mysql: - image: busybox - profiles: - - all - volumes: - - ${DATA_DIRECTORY}/var/lib/mysql:/var/lib/mysql:rw + db-data-mysql: + extends: + file: compose_databases.yaml + service: db-data-mysql - db_data_pgsql: - image: busybox - volumes: - - ${DATA_DIRECTORY}/var/lib/postgresql/data:/var/lib/postgresql/data:rw + db-data-pgsql: + extends: + file: compose_databases.yaml + service: db-data-pgsql # elasticsearch: -# image: "${ELASTICSEARCH_IMAGE}:${ELASTICSEARCH_IMAGE_TAG}" -# restart: "${RESTART_POLICY}" -# profiles: -# - full -# - all -# environment: -# - transport.host=0.0.0.0 -# - discovery.zen.minimum_master_nodes=1 -# networks: -# zbx_net_backend: -# aliases: -# - elasticsearch +# extends: +# file: compose_databases.yaml +# service: elasticsearch networks: zbx_net_frontend: @@ -566,9 +217,17 @@ networks: driver: "${BACKEND_NETWORK_DRIVER}" config: - subnet: "${BACKEND_SUBNET}" + zbx_net_database: + driver: bridge + driver_opts: + com.docker.network.enable_ipv6: "${DATABASE_NETWORK_ENABLE_IPV6}" + internal: true + ipam: + driver: "${DATABASE_NETWORK_DRIVER}" volumes: snmptraps: +# dbsocket: secrets: MYSQL_USER: