From 9f684786a2fe2004e0427075ea43f035ed96b373 Mon Sep 17 00:00:00 2001 From: Alexey Pustovalov Date: Fri, 15 Oct 2021 15:55:46 -0400 Subject: [PATCH] New build procedure for RHEL based images --- Dockerfiles/agent/rhel/Dockerfile | 86 ++--- Dockerfiles/agent2/rhel/Dockerfile | 116 ++---- Dockerfiles/build-base/rhel/.dockerignore | 1 + Dockerfiles/build-base/rhel/Dockerfile | 98 +++++ Dockerfiles/build-base/rhel/build.sh | 1 + .../build-base/rhel/licenses/gpl-2.0.txt | 339 ++++++++++++++++++ Dockerfiles/build-mysql/rhel/.dockerignore | 1 + Dockerfiles/build-mysql/rhel/Dockerfile | 80 +++++ Dockerfiles/build-mysql/rhel/build.sh | 1 + Dockerfiles/build-sqlite3/rhel/.dockerignore | 1 + Dockerfiles/build-sqlite3/rhel/Dockerfile | 67 ++++ Dockerfiles/build-sqlite3/rhel/build.sh | 1 + Dockerfiles/java-gateway/rhel/Dockerfile | 76 ++-- Dockerfiles/proxy-mysql/rhel/Dockerfile | 106 ++---- Dockerfiles/proxy-sqlite3/rhel/Dockerfile | 100 ++---- Dockerfiles/server-mysql/rhel/Dockerfile | 109 ++---- Dockerfiles/snmptraps/rhel/Dockerfile | 10 +- Dockerfiles/web-nginx-mysql/rhel/Dockerfile | 81 +++-- Dockerfiles/web-service/rhel/Dockerfile | 84 ++--- 19 files changed, 859 insertions(+), 499 deletions(-) create mode 100644 Dockerfiles/build-base/rhel/.dockerignore create mode 100644 Dockerfiles/build-base/rhel/Dockerfile create mode 120000 Dockerfiles/build-base/rhel/build.sh create mode 100644 Dockerfiles/build-base/rhel/licenses/gpl-2.0.txt create mode 100644 Dockerfiles/build-mysql/rhel/.dockerignore create mode 100644 Dockerfiles/build-mysql/rhel/Dockerfile create mode 120000 Dockerfiles/build-mysql/rhel/build.sh create mode 100644 Dockerfiles/build-sqlite3/rhel/.dockerignore create mode 100644 Dockerfiles/build-sqlite3/rhel/Dockerfile create mode 120000 Dockerfiles/build-sqlite3/rhel/build.sh diff --git a/Dockerfiles/agent/rhel/Dockerfile b/Dockerfiles/agent/rhel/Dockerfile index 3bfee80c7..cbc2f9eec 100644 --- a/Dockerfiles/agent/rhel/Dockerfile +++ b/Dockerfiles/agent/rhel/Dockerfile @@ -1,12 +1,19 @@ -FROM registry.access.redhat.com/ubi8/ubi -MAINTAINER Alexey Pustovalov - +# syntax=docker/dockerfile:1 ARG MAJOR_VERSION=6.0 -ARG RELEASE= ARG ZBX_VERSION=${MAJOR_VERSION} - +ARG BUILD_BASE_IMAGE=zabbix-build-mysql:rhel-${ZBX_VERSION} ARG ZBX_SOURCES=https://git.zabbix.com/scm/zbx/zabbix.git -ENV ZBX_VERSION=${ZBX_VERSION} ZBX_SOURCES=${ZBX_SOURCES} + +FROM ${BUILD_BASE_IMAGE} as builder + +FROM registry.access.redhat.com/ubi8/ubi-minimal + +ARG MAJOR_VERSION +ARG RELEASE +ARG ZBX_VERSION +ARG ZBX_SOURCES + +ENV TERM=xterm ZBX_VERSION=${ZBX_VERSION} ZBX_SOURCES=${ZBX_SOURCES} LABEL name="zabbix/zabbix-agent-trunk" \ maintainer="alexey.pustovalov@zabbix.com" \ @@ -37,19 +44,29 @@ LABEL name="zabbix/zabbix-agent-trunk" \ STOPSIGNAL SIGTERM COPY ["licenses", "/licenses"] +COPY --from=builder ["/tmp/zabbix-${ZBX_VERSION}/src/zabbix_agent/zabbix_agentd", "/usr/sbin/zabbix_agentd"] +COPY --from=builder ["/tmp/zabbix-${ZBX_VERSION}/src/zabbix_get/zabbix_get", "/usr/bin/zabbix_get"] +COPY --from=builder ["/tmp/zabbix-${ZBX_VERSION}/src/zabbix_sender/zabbix_sender", "/usr/bin/zabbix_sender"] +COPY --from=builder ["/tmp/zabbix-${ZBX_VERSION}/conf/zabbix_agentd.conf", "/etc/zabbix/zabbix_agentd.conf"] RUN set -eux && INSTALL_PKGS="bash \ tini \ tzdata \ iputils \ + shadow-utils \ pcre \ libcurl" && \ - REPOLIST="ubi-8-baseos,ubi-8-appstream,epel" && \ - dnf -y update-minimal --disablerepo "*" --enablerepo "ubi-8-baseos" --setopt=tsflags=nodocs \ - --security --sec-severity=Important --setopt=install_weak_deps=False --sec-severity=Critical && \ - dnf -y install https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm && \ - dnf -y install --disablerepo "*" --enablerepo "${REPOLIST}" --setopt=install_weak_deps=False --best \ - --setopt=tsflags=nodocs ${INSTALL_PKGS} && \ + curl -sSL -o /tmp/epel-release-latest-8.noarch.rpm https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm && \ + rpm -ivh /tmp/epel-release-latest-8.noarch.rpm && \ + rm -rf /tmp/epel-release-latest-8.noarch.rpm && \ + microdnf -y install \ + --disablerepo "*" \ + --enablerepo "ubi-8-baseos" \ + --enablerepo "epel" \ + --setopt=install_weak_deps=0 \ + --best \ + --setopt=tsflags=nodocs \ + ${INSTALL_PKGS} && \ groupadd --system --gid 1995 zabbix && \ useradd \ --system --comment "Zabbix monitoring system" \ @@ -63,50 +80,7 @@ RUN set -eux && INSTALL_PKGS="bash \ mkdir -p /var/lib/zabbix && \ mkdir -p /var/lib/zabbix/enc && \ mkdir -p /var/lib/zabbix/modules && \ - dnf -y clean all && \ - rm -rf /var/cache/yum /var/lib/yum/yumdb/* /usr/lib/udev/hwdb.d/* && \ - rm -rf /var/cache/dnf /etc/udev/hwdb.bin /root/.pki - -RUN set -eux && REPOLIST="ubi-8-baseos,ubi-8-appstream" && \ - INSTALL_PKGS="autoconf \ - automake \ - libcurl-devel \ - openssl-devel \ - openldap-devel \ - gcc \ - pcre-devel \ - make \ - git" && \ - dnf -y install --disablerepo "*" --enablerepo "${REPOLIST}" --setopt=install_weak_deps=False --best \ - --setopt=tsflags=nodocs ${INSTALL_PKGS} && \ - cd /tmp/ && \ - git -c advice.detachedHead=false clone ${ZBX_SOURCES} --branch master --depth 1 --single-branch zabbix-${ZBX_VERSION} && \ - cd /tmp/zabbix-${ZBX_VERSION} && \ - zabbix_revision=`git rev-parse --short HEAD` && \ - sed -i "s/{ZABBIX_REVISION}/$zabbix_revision/g" include/version.h && \ - ./bootstrap.sh && \ - export CFLAGS="-fPIC -pie -Wl,-z,relro -Wl,-z,now" && \ - ./configure \ - --datadir=/usr/lib \ - --libdir=/usr/lib/zabbix \ - --prefix=/usr \ - --sysconfdir=/etc/zabbix \ - --prefix=/usr \ - --enable-agent \ - --with-libcurl \ - --with-ldap \ - --with-openssl \ - --enable-ipv6 \ - --silent && \ - make -j"$(nproc)" -s && \ - cp /tmp/zabbix-${ZBX_VERSION}/src/zabbix_agent/zabbix_agentd /usr/sbin/zabbix_agentd && \ - cp /tmp/zabbix-${ZBX_VERSION}/src/zabbix_get/zabbix_get /usr/bin/zabbix_get && \ - cp /tmp/zabbix-${ZBX_VERSION}/src/zabbix_sender/zabbix_sender /usr/bin/zabbix_sender && \ - cp /tmp/zabbix-${ZBX_VERSION}/conf/zabbix_agentd.conf /etc/zabbix/zabbix_agentd.conf && \ - cd /tmp/ && \ - rm -rf /tmp/zabbix-${ZBX_VERSION}/ && \ - dnf -y history undo last && \ - dnf -y clean all && \ + microdnf -y clean all && \ chown --quiet -R zabbix:root /etc/zabbix/ /var/lib/zabbix/ && \ chgrp -R 0 /etc/zabbix/ /var/lib/zabbix/ && \ chmod -R g=u /etc/zabbix/ /var/lib/zabbix/ && \ diff --git a/Dockerfiles/agent2/rhel/Dockerfile b/Dockerfiles/agent2/rhel/Dockerfile index 2a89e2405..2688b3ff4 100644 --- a/Dockerfiles/agent2/rhel/Dockerfile +++ b/Dockerfiles/agent2/rhel/Dockerfile @@ -1,12 +1,19 @@ -FROM registry.access.redhat.com/ubi8/ubi -MAINTAINER Alexey Pustovalov - +# syntax=docker/dockerfile:1 ARG MAJOR_VERSION=6.0 -ARG RELEASE= ARG ZBX_VERSION=${MAJOR_VERSION} - +ARG BUILD_BASE_IMAGE=zabbix-build-mysql:rhel-${ZBX_VERSION} ARG ZBX_SOURCES=https://git.zabbix.com/scm/zbx/zabbix.git -ENV ZBX_VERSION=${ZBX_VERSION} ZBX_SOURCES=${ZBX_SOURCES} + +FROM ${BUILD_BASE_IMAGE} as builder + +FROM registry.access.redhat.com/ubi8/ubi-minimal + +ARG MAJOR_VERSION +ARG RELEASE +ARG ZBX_VERSION +ARG ZBX_SOURCES + +ENV TERM=xterm ZBX_VERSION=${ZBX_VERSION} ZBX_SOURCES=${ZBX_SOURCES} LABEL name="zabbix/zabbix-agent2-trunk" \ maintainer="alexey.pustovalov@zabbix.com" \ @@ -37,19 +44,29 @@ LABEL name="zabbix/zabbix-agent2-trunk" \ STOPSIGNAL SIGTERM COPY ["licenses", "/licenses"] +COPY --from=builder ["/tmp/zabbix-${ZBX_VERSION}/src/go/bin/zabbix_agent2", "/usr/sbin/zabbix_agent2"] +COPY --from=builder ["/tmp/zabbix-${ZBX_VERSION}/src/zabbix_get/zabbix_get", "/usr/bin/zabbix_get"] +COPY --from=builder ["/tmp/zabbix-${ZBX_VERSION}/src/zabbix_sender/zabbix_sender", "/usr/bin/zabbix_sender"] +COPY --from=builder ["/tmp/zabbix-${ZBX_VERSION}/src/go/conf/zabbix_agent2.conf", "/etc/zabbix/zabbix_agent2.conf"] RUN set -eux && INSTALL_PKGS="bash \ tini \ tzdata \ iputils \ + shadow-utils \ pcre \ libcurl" && \ - REPOLIST="ubi-8-baseos,ubi-8-appstream,epel" && \ - dnf -y update-minimal --disablerepo "*" --enablerepo "ubi-8-baseos" --setopt=tsflags=nodocs \ - --security --sec-severity=Important --setopt=install_weak_deps=False --sec-severity=Critical && \ - dnf -y install https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm && \ - dnf -y install --disablerepo "*" --enablerepo "${REPOLIST}" --setopt=install_weak_deps=False --best \ - --setopt=tsflags=nodocs ${INSTALL_PKGS} && \ + curl -sSL -o /tmp/epel-release-latest-8.noarch.rpm https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm && \ + rpm -ivh /tmp/epel-release-latest-8.noarch.rpm && \ + rm -rf /tmp/epel-release-latest-8.noarch.rpm && \ + microdnf -y install \ + --disablerepo "*" \ + --enablerepo "ubi-8-baseos" \ + --enablerepo "epel" \ + --setopt=install_weak_deps=0 \ + --best \ + --setopt=tsflags=nodocs \ + ${INSTALL_PKGS} && \ groupadd --system --gid 1995 zabbix && \ useradd \ --system --comment "Zabbix monitoring system" \ @@ -64,80 +81,7 @@ RUN set -eux && INSTALL_PKGS="bash \ mkdir -p /var/lib/zabbix/enc && \ mkdir -p /var/lib/zabbix/modules && \ mkdir -p /var/lib/zabbix/buffer && \ - dnf -y clean all && \ - rm -rf /var/cache/yum /var/lib/yum/yumdb/* /usr/lib/udev/hwdb.d/* && \ - rm -rf /var/cache/dnf /etc/udev/hwdb.bin /root/.pki - -RUN set -eux && REPOLIST="ubi-8-baseos,ubi-8-appstream" && \ - PATH=/usr/local/go/bin:$PATH && \ - INSTALL_PKGS="autoconf \ - automake \ - libcurl-devel \ - openssl-devel \ - openldap-devel \ - gcc \ - pcre-devel \ - make \ - git \ - wget \ - tar \ - binutils" && \ - dnf -y install --disablerepo "*" --enablerepo "${REPOLIST}" --setopt=install_weak_deps=False --best \ - --setopt=tsflags=nodocs ${INSTALL_PKGS} && \ - ARCH_SUFFIX="$(arch)"; \ - case "$ARCH_SUFFIX" in \ - x86_64) \ - url='https://dl.google.com/go/go1.17.2.linux-amd64.tar.gz'; \ - sha256='f242a9db6a0ad1846de7b6d94d507915d14062660616a61ef7c808a76e4f1676'; \ - ;; \ - aarch64) \ - url='https://dl.google.com/go/go1.17.2.linux-arm64.tar.gz'; \ - sha256='a5a43c9cdabdb9f371d56951b14290eba8ce2f9b0db48fb5fc657943984fd4fc'; \ - ;; \ - *) echo "Unknown ARCH_SUFFIX=${ARCH_SUFFIX-}"; exit 1 ;; \ - esac; \ - wget -O go.tgz.asc "$url.asc" && \ - wget -O go.tgz "$url" --progress=dot:giga && \ - echo "$sha256 *go.tgz" | sha256sum -c - && \ - GNUPGHOME="$(mktemp -d)"; export GNUPGHOME; \ - gpg --batch --keyserver keyserver.ubuntu.com --recv-keys 'EB4C 1BFD 4F04 2F6D DDCC EC91 7721 F63B D38B 4796' && \ - gpg --batch --verify go.tgz.asc go.tgz && \ - gpgconf --kill all && \ - rm -rf "$GNUPGHOME" go.tgz.asc && \ - tar -C /usr/local -xzf go.tgz && \ - rm go.tgz && \ - cd /tmp/ && \ - git -c advice.detachedHead=false clone ${ZBX_SOURCES} --branch master --depth 1 --single-branch zabbix-${ZBX_VERSION} && \ - cd /tmp/zabbix-${ZBX_VERSION} && \ - zabbix_revision=`git rev-parse --short HEAD` && \ - sed -i "s/{ZABBIX_REVISION}/$zabbix_revision/g" src/go/pkg/version/version.go && \ - ./bootstrap.sh && \ - export CFLAGS="-fPIC -pie -Wl,-z,relro -Wl,-z,now" && \ - export GOPATH=/tmp/zabbix-${ZBX_VERSION}/go && \ - ./configure \ - --datadir=/usr/lib \ - --libdir=/usr/lib/zabbix \ - --prefix=/usr \ - --sysconfdir=/etc/zabbix \ - --prefix=/usr \ - --with-openssl \ - --enable-ipv6 \ - --enable-agent2 \ - --enable-agent \ - --silent && \ - make -j"$(nproc)" -s && \ - cp /tmp/zabbix-${ZBX_VERSION}/src/go/bin/zabbix_agent2 /usr/sbin/zabbix_agent2 && \ - cp /tmp/zabbix-${ZBX_VERSION}/src/zabbix_get/zabbix_get /usr/bin/zabbix_get && \ - cp /tmp/zabbix-${ZBX_VERSION}/src/zabbix_sender/zabbix_sender /usr/bin/zabbix_sender && \ - cp /tmp/zabbix-${ZBX_VERSION}/src/go/conf/zabbix_agent2.conf /etc/zabbix/zabbix_agent2.conf && \ - strip /usr/sbin/zabbix_agent2 && \ - strip /usr/bin/zabbix_get && \ - strip /usr/bin/zabbix_sender && \ - cd /tmp/ && \ - rm -rf /tmp/zabbix-${ZBX_VERSION}/ && \ - rm -rf /usr/local/go/ && \ - dnf -y history undo last && \ - dnf -y clean all && \ + microdnf -y clean all && \ chown --quiet -R zabbix:root /etc/zabbix/ /var/lib/zabbix/ && \ chgrp -R 0 /etc/zabbix/ /var/lib/zabbix/ && \ chmod -R g=u /etc/zabbix/ /var/lib/zabbix/ && \ diff --git a/Dockerfiles/build-base/rhel/.dockerignore b/Dockerfiles/build-base/rhel/.dockerignore new file mode 100644 index 000000000..88a84e55a --- /dev/null +++ b/Dockerfiles/build-base/rhel/.dockerignore @@ -0,0 +1 @@ +build.sh diff --git a/Dockerfiles/build-base/rhel/Dockerfile b/Dockerfiles/build-base/rhel/Dockerfile new file mode 100644 index 000000000..64cd6dae1 --- /dev/null +++ b/Dockerfiles/build-base/rhel/Dockerfile @@ -0,0 +1,98 @@ +# syntax=docker/dockerfile:1 +FROM registry.access.redhat.com/ubi8/ubi-minimal + +ARG MAJOR_VERSION=6.0 +ARG RELEASE= +ARG ZBX_VERSION=${MAJOR_VERSION} +ARG ZBX_SOURCES=https://git.zabbix.com/scm/zbx/zabbix.git + +ENV TERM=xterm ZBX_VERSION=${ZBX_VERSION} ZBX_SOURCES=${ZBX_SOURCES} \ + PATH=/usr/local/go/bin:$PATH + +LABEL name="zabbix/zabbix-build-base-trunk" \ + maintainer="alexey.pustovalov@zabbix.com" \ + vendor="Zabbix LLC" \ + version="${MAJOR_VERSION}" \ + release="${RELEASE}" \ + summary="Zabbix build base" \ + description="Prepared environment to build Zabbix components" \ + url="https://www.zabbix.com/" \ + io.k8s.description="Prepared environment to build Zabbix components" \ + io.k8s.display-name="Zabbix build base" \ + io.openshift.expose-services="" \ + io.openshift.tags="zabbix,build" \ + org.label-schema.name="zabbix-build-base-rhel" \ + org.label-schema.vendor="Zabbix LLC" \ + org.label-schema.url="https://zabbix.com/" \ + org.label-schema.description="Prepared environment to build Zabbix components" \ + org.label-schema.vcs-ref="${VCS_REF}" + +COPY ["licenses", "/licenses"] + +RUN set -eux && \ + microdnf -y module enable mysql && \ + INSTALL_PKGS="autoconf \ + automake \ + bash \ + gcc \ + pcre-devel \ + libcurl-devel \ + libevent-devel \ + libssh-devel \ + libxml2-devel \ + openssl-devel \ + openldap-devel \ + make \ + mysql-devel \ + net-snmp-devel \ + OpenIPMI-devel \ + openldap-devel \ + sqlite-devel \ + postgresql-devel \ + java-1.8.0-openjdk-devel \ + git \ + wget \ + tar \ + gettext \ + unixODBC-devel" && \ + curl -sSL -o /tmp/epel-release-latest-8.noarch.rpm https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm && \ + rpm -ivh /tmp/epel-release-latest-8.noarch.rpm && \ + rm -rf /tmp/epel-release-latest-8.noarch.rpm && \ + microdnf -y module enable mysql && \ + microdnf -y install \ + --disablerepo "*" \ + --enablerepo "ubi-8-baseos" \ + --enablerepo "ubi-8-appstream" \ + --enablerepo "rhel-8-for-x86_64-baseos-rpms" \ + --enablerepo "rhel-8-for-x86_64-appstream-rpms" \ + --enablerepo "codeready-builder-for-rhel-8-x86_64-rpms" \ + --enablerepo "epel" \ + --setopt=install_weak_deps=0 \ + --best \ + --setopt=tsflags=nodocs \ + ${INSTALL_PKGS} && \ + ARCH_SUFFIX="$(arch)"; \ + case "$ARCH_SUFFIX" in \ + x86_64) \ + url='https://dl.google.com/go/go1.17.2.linux-amd64.tar.gz'; \ + sha256='f242a9db6a0ad1846de7b6d94d507915d14062660616a61ef7c808a76e4f1676'; \ + ;; \ + aarch64) \ + url='https://dl.google.com/go/go1.17.2.linux-arm64.tar.gz'; \ + sha256='a5a43c9cdabdb9f371d56951b14290eba8ce2f9b0db48fb5fc657943984fd4fc'; \ + ;; \ + *) echo "Unknown ARCH_SUFFIX=${ARCH_SUFFIX-}"; exit 1 ;; \ + esac; \ + wget -O go.tgz.asc "$url.asc" && \ + wget -O go.tgz "$url" --progress=dot:giga && \ + echo "$sha256 *go.tgz" | sha256sum -c - && \ + GNUPGHOME="$(mktemp -d)"; export GNUPGHOME; \ + gpg --batch --keyserver keyserver.ubuntu.com --recv-keys 'EB4C 1BFD 4F04 2F6D DDCC EC91 7721 F63B D38B 4796' && \ + gpg --batch --verify go.tgz.asc go.tgz && \ + gpgconf --kill all && \ + rm -rf "$GNUPGHOME" go.tgz.asc && \ + tar -C /usr/local -xzf go.tgz && \ + rm go.tgz && \ + microdnf -y clean all && \ + rm -rf /var/cache/yum /var/lib/yum/yumdb/* /usr/lib/udev/hwdb.d/* && \ + rm -rf /var/cache/dnf /etc/udev/hwdb.bin /root/.pki diff --git a/Dockerfiles/build-base/rhel/build.sh b/Dockerfiles/build-base/rhel/build.sh new file mode 120000 index 000000000..46b203134 --- /dev/null +++ b/Dockerfiles/build-base/rhel/build.sh @@ -0,0 +1 @@ +../../../build.sh \ No newline at end of file diff --git a/Dockerfiles/build-base/rhel/licenses/gpl-2.0.txt b/Dockerfiles/build-base/rhel/licenses/gpl-2.0.txt new file mode 100644 index 000000000..d159169d1 --- /dev/null +++ b/Dockerfiles/build-base/rhel/licenses/gpl-2.0.txt @@ -0,0 +1,339 @@ + GNU GENERAL PUBLIC LICENSE + Version 2, June 1991 + + Copyright (C) 1989, 1991 Free Software Foundation, Inc., + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The licenses for most software are designed to take away your +freedom to share and change it. By contrast, the GNU General Public +License is intended to guarantee your freedom to share and change free +software--to make sure the software is free for all its users. This +General Public License applies to most of the Free Software +Foundation's software and to any other program whose authors commit to +using it. (Some other Free Software Foundation software is covered by +the GNU Lesser General Public License instead.) You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +this service if you wish), that you receive source code or can get it +if you want it, that you can change the software or use pieces of it +in new free programs; and that you know you can do these things. + + To protect your rights, we need to make restrictions that forbid +anyone to deny you these rights or to ask you to surrender the rights. +These restrictions translate to certain responsibilities for you if you +distribute copies of the software, or if you modify it. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must give the recipients all the rights that +you have. You must make sure that they, too, receive or can get the +source code. And you must show them these terms so they know their +rights. + + We protect your rights with two steps: (1) copyright the software, and +(2) offer you this license which gives you legal permission to copy, +distribute and/or modify the software. + + Also, for each author's protection and ours, we want to make certain +that everyone understands that there is no warranty for this free +software. If the software is modified by someone else and passed on, we +want its recipients to know that what they have is not the original, so +that any problems introduced by others will not reflect on the original +authors' reputations. + + Finally, any free program is threatened constantly by software +patents. We wish to avoid the danger that redistributors of a free +program will individually obtain patent licenses, in effect making the +program proprietary. To prevent this, we have made it clear that any +patent must be licensed for everyone's free use or not licensed at all. + + The precise terms and conditions for copying, distribution and +modification follow. + + GNU GENERAL PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. This License applies to any program or other work which contains +a notice placed by the copyright holder saying it may be distributed +under the terms of this General Public License. The "Program", below, +refers to any such program or work, and a "work based on the Program" +means either the Program or any derivative work under copyright law: +that is to say, a work containing the Program or a portion of it, +either verbatim or with modifications and/or translated into another +language. (Hereinafter, translation is included without limitation in +the term "modification".) Each licensee is addressed as "you". + +Activities other than copying, distribution and modification are not +covered by this License; they are outside its scope. The act of +running the Program is not restricted, and the output from the Program +is covered only if its contents constitute a work based on the +Program (independent of having been made by running the Program). +Whether that is true depends on what the Program does. + + 1. You may copy and distribute verbatim copies of the Program's +source code as you receive it, in any medium, provided that you +conspicuously and appropriately publish on each copy an appropriate +copyright notice and disclaimer of warranty; keep intact all the +notices that refer to this License and to the absence of any warranty; +and give any other recipients of the Program a copy of this License +along with the Program. + +You may charge a fee for the physical act of transferring a copy, and +you may at your option offer warranty protection in exchange for a fee. + + 2. You may modify your copy or copies of the Program or any portion +of it, thus forming a work based on the Program, and copy and +distribute such modifications or work under the terms of Section 1 +above, provided that you also meet all of these conditions: + + a) You must cause the modified files to carry prominent notices + stating that you changed the files and the date of any change. + + b) You must cause any work that you distribute or publish, that in + whole or in part contains or is derived from the Program or any + part thereof, to be licensed as a whole at no charge to all third + parties under the terms of this License. + + c) If the modified program normally reads commands interactively + when run, you must cause it, when started running for such + interactive use in the most ordinary way, to print or display an + announcement including an appropriate copyright notice and a + notice that there is no warranty (or else, saying that you provide + a warranty) and that users may redistribute the program under + these conditions, and telling the user how to view a copy of this + License. (Exception: if the Program itself is interactive but + does not normally print such an announcement, your work based on + the Program is not required to print an announcement.) + +These requirements apply to the modified work as a whole. If +identifiable sections of that work are not derived from the Program, +and can be reasonably considered independent and separate works in +themselves, then this License, and its terms, do not apply to those +sections when you distribute them as separate works. But when you +distribute the same sections as part of a whole which is a work based +on the Program, the distribution of the whole must be on the terms of +this License, whose permissions for other licensees extend to the +entire whole, and thus to each and every part regardless of who wrote it. + +Thus, it is not the intent of this section to claim rights or contest +your rights to work written entirely by you; rather, the intent is to +exercise the right to control the distribution of derivative or +collective works based on the Program. + +In addition, mere aggregation of another work not based on the Program +with the Program (or with a work based on the Program) on a volume of +a storage or distribution medium does not bring the other work under +the scope of this License. + + 3. You may copy and distribute the Program (or a work based on it, +under Section 2) in object code or executable form under the terms of +Sections 1 and 2 above provided that you also do one of the following: + + a) Accompany it with the complete corresponding machine-readable + source code, which must be distributed under the terms of Sections + 1 and 2 above on a medium customarily used for software interchange; or, + + b) Accompany it with a written offer, valid for at least three + years, to give any third party, for a charge no more than your + cost of physically performing source distribution, a complete + machine-readable copy of the corresponding source code, to be + distributed under the terms of Sections 1 and 2 above on a medium + customarily used for software interchange; or, + + c) Accompany it with the information you received as to the offer + to distribute corresponding source code. (This alternative is + allowed only for noncommercial distribution and only if you + received the program in object code or executable form with such + an offer, in accord with Subsection b above.) + +The source code for a work means the preferred form of the work for +making modifications to it. For an executable work, complete source +code means all the source code for all modules it contains, plus any +associated interface definition files, plus the scripts used to +control compilation and installation of the executable. However, as a +special exception, the source code distributed need not include +anything that is normally distributed (in either source or binary +form) with the major components (compiler, kernel, and so on) of the +operating system on which the executable runs, unless that component +itself accompanies the executable. + +If distribution of executable or object code is made by offering +access to copy from a designated place, then offering equivalent +access to copy the source code from the same place counts as +distribution of the source code, even though third parties are not +compelled to copy the source along with the object code. + + 4. You may not copy, modify, sublicense, or distribute the Program +except as expressly provided under this License. Any attempt +otherwise to copy, modify, sublicense or distribute the Program is +void, and will automatically terminate your rights under this License. +However, parties who have received copies, or rights, from you under +this License will not have their licenses terminated so long as such +parties remain in full compliance. + + 5. You are not required to accept this License, since you have not +signed it. However, nothing else grants you permission to modify or +distribute the Program or its derivative works. These actions are +prohibited by law if you do not accept this License. Therefore, by +modifying or distributing the Program (or any work based on the +Program), you indicate your acceptance of this License to do so, and +all its terms and conditions for copying, distributing or modifying +the Program or works based on it. + + 6. Each time you redistribute the Program (or any work based on the +Program), the recipient automatically receives a license from the +original licensor to copy, distribute or modify the Program subject to +these terms and conditions. You may not impose any further +restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties to +this License. + + 7. If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), +conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot +distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you +may not distribute the Program at all. For example, if a patent +license would not permit royalty-free redistribution of the Program by +all those who receive copies directly or indirectly through you, then +the only way you could satisfy both it and this License would be to +refrain entirely from distribution of the Program. + +If any portion of this section is held invalid or unenforceable under +any particular circumstance, the balance of the section is intended to +apply and the section as a whole is intended to apply in other +circumstances. + +It is not the purpose of this section to induce you to infringe any +patents or other property right claims or to contest validity of any +such claims; this section has the sole purpose of protecting the +integrity of the free software distribution system, which is +implemented by public license practices. Many people have made +generous contributions to the wide range of software distributed +through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot +impose that choice. + +This section is intended to make thoroughly clear what is believed to +be a consequence of the rest of this License. + + 8. If the distribution and/or use of the Program is restricted in +certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Program under this License +may add an explicit geographical distribution limitation excluding +those countries, so that distribution is permitted only in or among +countries not thus excluded. In such case, this License incorporates +the limitation as if written in the body of this License. + + 9. The Free Software Foundation may publish revised and/or new versions +of the General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + +Each version is given a distinguishing version number. If the Program +specifies a version number of this License which applies to it and "any +later version", you have the option of following the terms and conditions +either of that version or of any later version published by the Free +Software Foundation. If the Program does not specify a version number of +this License, you may choose any version ever published by the Free Software +Foundation. + + 10. If you wish to incorporate parts of the Program into other free +programs whose distribution conditions are different, write to the author +to ask for permission. For software which is copyrighted by the Free +Software Foundation, write to the Free Software Foundation; we sometimes +make exceptions for this. Our decision will be guided by the two goals +of preserving the free status of all derivatives of our free software and +of promoting the sharing and reuse of software generally. + + NO WARRANTY + + 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY +FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN +OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES +PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED +OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS +TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE +PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, +REPAIR OR CORRECTION. + + 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR +REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, +INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING +OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED +TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY +YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER +PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE +POSSIBILITY OF SUCH DAMAGES. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +convey the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + + Copyright (C) + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License along + with this program; if not, write to the Free Software Foundation, Inc., + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + +Also add information on how to contact you by electronic and paper mail. + +If the program is interactive, make it output a short notice like this +when it starts in an interactive mode: + + Gnomovision version 69, Copyright (C) year name of author + Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, the commands you use may +be called something other than `show w' and `show c'; they could even be +mouse-clicks or menu items--whatever suits your program. + +You should also get your employer (if you work as a programmer) or your +school, if any, to sign a "copyright disclaimer" for the program, if +necessary. Here is a sample; alter the names: + + Yoyodyne, Inc., hereby disclaims all copyright interest in the program + `Gnomovision' (which makes passes at compilers) written by James Hacker. + + , 1 April 1989 + Ty Coon, President of Vice + +This General Public License does not permit incorporating your program into +proprietary programs. If your program is a subroutine library, you may +consider it more useful to permit linking proprietary applications with the +library. If this is what you want to do, use the GNU Lesser General +Public License instead of this License. diff --git a/Dockerfiles/build-mysql/rhel/.dockerignore b/Dockerfiles/build-mysql/rhel/.dockerignore new file mode 100644 index 000000000..88a84e55a --- /dev/null +++ b/Dockerfiles/build-mysql/rhel/.dockerignore @@ -0,0 +1 @@ +build.sh diff --git a/Dockerfiles/build-mysql/rhel/Dockerfile b/Dockerfiles/build-mysql/rhel/Dockerfile new file mode 100644 index 000000000..0d68d0a2f --- /dev/null +++ b/Dockerfiles/build-mysql/rhel/Dockerfile @@ -0,0 +1,80 @@ +# syntax=docker/dockerfile:1 +ARG MAJOR_VERSION=6.0 +ARG ZBX_VERSION=${MAJOR_VERSION} +ARG BUILD_BASE_IMAGE=zabbix-build-base:rhel-${ZBX_VERSION} + +FROM ${BUILD_BASE_IMAGE} as builder + +ARG MAJOR_VERSION +ARG RELEASE +ARG ZBX_VERSION +ARG ZBX_SOURCES=https://git.zabbix.com/scm/zbx/zabbix.git + +LABEL name="zabbix/zabbix-build-mysql-trunk" \ + maintainer="alexey.pustovalov@zabbix.com" \ + vendor="Zabbix LLC" \ + version="${MAJOR_VERSION}" \ + release="${RELEASE}" \ + summary="Zabbix build base (MySQL)" \ + description="Zabbix build base for MySQL based images" \ + url="https://www.zabbix.com/" \ + io.k8s.description="Zabbix build base for MySQL based images" \ + io.k8s.display-name="Zabbix build base (MySQL)" \ + io.openshift.expose-services="" \ + io.openshift.tags="zabbix,build,mysql" \ + org.label-schema.name="zabbix-build-mysql-rhel" \ + org.label-schema.vendor="Zabbix LLC" \ + org.label-schema.url="https://zabbix.com/" \ + org.label-schema.description="Zabbix build base for MySQL based images" \ + org.label-schema.vcs-ref="${VCS_REF}" + +RUN set -eux && \ + cd /tmp/ && \ + git -c advice.detachedHead=false clone ${ZBX_SOURCES} --branch master --depth 1 --single-branch /tmp/zabbix-${ZBX_VERSION} && \ + cd /tmp/zabbix-${ZBX_VERSION} && \ + zabbix_revision=`git rev-parse --short HEAD` && \ + sed -i "s/{ZABBIX_REVISION}/$zabbix_revision/g" include/version.h && \ + sed -i "s/{ZABBIX_REVISION}/$zabbix_revision/g" src/go/pkg/version/version.go && \ + sed -i "s/{ZABBIX_REVISION}/$zabbix_revision/g" src/zabbix_java/src/com/zabbix/gateway/GeneralInformation.java && \ + ./bootstrap.sh && \ + export CFLAGS="-fPIC -pie -Wl,-z,relro -Wl,-z,now" && \ + ./configure \ + --datadir=/usr/lib \ + --libdir=/usr/lib/zabbix \ + --prefix=/usr \ + --sysconfdir=/etc/zabbix \ + --enable-agent \ + --enable-agent2 \ + --enable-server \ + --enable-proxy \ + --enable-webservice \ + --with-mysql \ + --with-ldap \ + --with-libcurl \ + --with-libxml2 \ + --enable-java \ + --with-net-snmp \ + --with-openipmi \ + --with-openssl \ + --with-ssh \ + --with-unixodbc \ + --enable-ipv6 \ + --silent && \ + make -j"$(nproc)" -s dbschema && \ + make -j"$(nproc)" -s && \ + make -j"$(nproc)" -s gettext && \ + cat database/mysql/schema.sql > database/mysql/create.sql && \ + cat database/mysql/images.sql >> database/mysql/create.sql && \ + cat database/mysql/data.sql >> database/mysql/create.sql && \ + gzip -c database/mysql/create.sql > database/mysql/create_server.sql.gz && \ + rm -rf database/mysql/create.sql && \ + cat database/mysql/schema.sql > database/mysql/create.sql && \ + gzip -c database/mysql/create.sql > database/mysql/create_proxy.sql.gz && \ + rm -rf database/mysql/create.sql && \ + strip /tmp/zabbix-${ZBX_VERSION}/src/zabbix_agent/zabbix_agentd && \ + strip /tmp/zabbix-${ZBX_VERSION}/src/zabbix_server/zabbix_server && \ + strip /tmp/zabbix-${ZBX_VERSION}/src/zabbix_proxy/zabbix_proxy && \ + strip /tmp/zabbix-${ZBX_VERSION}/src/go/bin/zabbix_agent2 && \ + strip /tmp/zabbix-${ZBX_VERSION}/src/zabbix_get/zabbix_get && \ + strip /tmp/zabbix-${ZBX_VERSION}/src/zabbix_sender/zabbix_sender && \ + strip /tmp/zabbix-${ZBX_VERSION}/src/go/bin/zabbix_web_service diff --git a/Dockerfiles/build-mysql/rhel/build.sh b/Dockerfiles/build-mysql/rhel/build.sh new file mode 120000 index 000000000..46b203134 --- /dev/null +++ b/Dockerfiles/build-mysql/rhel/build.sh @@ -0,0 +1 @@ +../../../build.sh \ No newline at end of file diff --git a/Dockerfiles/build-sqlite3/rhel/.dockerignore b/Dockerfiles/build-sqlite3/rhel/.dockerignore new file mode 100644 index 000000000..88a84e55a --- /dev/null +++ b/Dockerfiles/build-sqlite3/rhel/.dockerignore @@ -0,0 +1 @@ +build.sh diff --git a/Dockerfiles/build-sqlite3/rhel/Dockerfile b/Dockerfiles/build-sqlite3/rhel/Dockerfile new file mode 100644 index 000000000..bdf03fcca --- /dev/null +++ b/Dockerfiles/build-sqlite3/rhel/Dockerfile @@ -0,0 +1,67 @@ +# syntax=docker/dockerfile:1 +ARG MAJOR_VERSION=6.0 +ARG ZBX_VERSION=${MAJOR_VERSION} +ARG BUILD_BASE_IMAGE=zabbix-build-base:rhel-${ZBX_VERSION} + +FROM ${BUILD_BASE_IMAGE} as builder + +ARG MAJOR_VERSION +ARG RELEASE +ARG ZBX_VERSION +ARG ZBX_SOURCES=https://git.zabbix.com/scm/zbx/zabbix.git + +LABEL name="zabbix/zabbix-build-sqlite3-trunk" \ + maintainer="alexey.pustovalov@zabbix.com" \ + vendor="Zabbix LLC" \ + version="${MAJOR_VERSION}" \ + release="${RELEASE}" \ + summary="Zabbix build base (SQLite3)" \ + description="Zabbix build base for SQLite3 based images" \ + url="https://www.zabbix.com/" \ + io.k8s.description="Zabbix build base for SQLite3 based images" \ + io.k8s.display-name="Zabbix build base (SQLite3)" \ + io.openshift.expose-services="" \ + io.openshift.tags="zabbix,build,sqlite3" \ + org.label-schema.name="zabbix-build-sqlite3-rhel" \ + org.label-schema.vendor="Zabbix LLC" \ + org.label-schema.url="https://zabbix.com/" \ + org.label-schema.description="Zabbix build base for SQLite3 based images" \ + org.label-schema.vcs-ref="${VCS_REF}" + +RUN set -eux && \ + cd /tmp/ && \ + git -c advice.detachedHead=false clone ${ZBX_SOURCES} --branch master --depth 1 --single-branch /tmp/zabbix-${ZBX_VERSION} && \ + cd /tmp/zabbix-${ZBX_VERSION} && \ + zabbix_revision=`git rev-parse --short HEAD` && \ + sed -i "s/{ZABBIX_REVISION}/$zabbix_revision/g" include/version.h && \ + sed -i "s/{ZABBIX_REVISION}/$zabbix_revision/g" src/go/pkg/version/version.go && \ + sed -i "s/{ZABBIX_REVISION}/$zabbix_revision/g" src/zabbix_java/src/com/zabbix/gateway/GeneralInformation.java && \ + ./bootstrap.sh && \ + export CFLAGS="-fPIC -pie -Wl,-z,relro -Wl,-z,now" && \ + ./configure \ + --datadir=/usr/lib \ + --libdir=/usr/lib/zabbix \ + --prefix=/usr \ + --sysconfdir=/etc/zabbix \ + --enable-agent \ + --enable-agent2 \ + --enable-proxy \ + --with-sqlite3 \ + --with-ldap \ + --with-libcurl \ + --with-libxml2 \ + --enable-java \ + --with-net-snmp \ + --with-openipmi \ + --with-openssl \ + --with-ssh \ + --with-unixodbc \ + --enable-ipv6 \ + --silent && \ + make -j"$(nproc)" -s dbschema && \ + make -j"$(nproc)" -s && \ + strip /tmp/zabbix-${ZBX_VERSION}/src/zabbix_agent/zabbix_agentd && \ + strip /tmp/zabbix-${ZBX_VERSION}/src/zabbix_proxy/zabbix_proxy && \ + strip /tmp/zabbix-${ZBX_VERSION}/src/go/bin/zabbix_agent2 && \ + strip /tmp/zabbix-${ZBX_VERSION}/src/zabbix_get/zabbix_get && \ + strip /tmp/zabbix-${ZBX_VERSION}/src/zabbix_sender/zabbix_sender diff --git a/Dockerfiles/build-sqlite3/rhel/build.sh b/Dockerfiles/build-sqlite3/rhel/build.sh new file mode 120000 index 000000000..46b203134 --- /dev/null +++ b/Dockerfiles/build-sqlite3/rhel/build.sh @@ -0,0 +1 @@ +../../../build.sh \ No newline at end of file diff --git a/Dockerfiles/java-gateway/rhel/Dockerfile b/Dockerfiles/java-gateway/rhel/Dockerfile index cd161bc23..059f92782 100644 --- a/Dockerfiles/java-gateway/rhel/Dockerfile +++ b/Dockerfiles/java-gateway/rhel/Dockerfile @@ -1,12 +1,19 @@ -FROM registry.access.redhat.com/ubi8/ubi -MAINTAINER Alexey Pustovalov - +# syntax=docker/dockerfile:1 ARG MAJOR_VERSION=6.0 -ARG RELEASE= ARG ZBX_VERSION=${MAJOR_VERSION} - +ARG BUILD_BASE_IMAGE=zabbix-build-mysql:rhel-${ZBX_VERSION} ARG ZBX_SOURCES=https://git.zabbix.com/scm/zbx/zabbix.git -ENV ZBX_VERSION=${ZBX_VERSION} ZBX_SOURCES=${ZBX_SOURCES} + +FROM ${BUILD_BASE_IMAGE} as builder + +FROM registry.access.redhat.com/ubi8/ubi-minimal + +ARG MAJOR_VERSION +ARG RELEASE +ARG ZBX_VERSION +ARG ZBX_SOURCES + +ENV TERM=xterm ZBX_VERSION=${ZBX_VERSION} ZBX_SOURCES=${ZBX_SOURCES} LABEL name="zabbix/zabbix-java-gateway-trunk" \ maintainer="alexey.pustovalov@zabbix.com" \ @@ -37,14 +44,22 @@ LABEL name="zabbix/zabbix-java-gateway-trunk" \ STOPSIGNAL SIGTERM COPY ["licenses", "/licenses"] +COPY --from=builder ["/tmp/zabbix-${ZBX_VERSION}/src/zabbix_java/bin", "/usr/sbin/zabbix_java/bin"] +COPY --from=builder ["/tmp/zabbix-${ZBX_VERSION}/src/zabbix_java/lib", "/usr/sbin/zabbix_java/lib"] -RUN set -eux && INSTALL_PKGS="bash \ +RUN set -eux && \ + INSTALL_PKGS="bash \ + findutils \ + shadow-utils \ java-1.8.0-openjdk-headless" && \ - REPOLIST="ubi-8-baseos,ubi-8-appstream" && \ - dnf -y update-minimal --disablerepo "*" --enablerepo "ubi-8-baseos" --setopt=tsflags=nodocs \ - --security --sec-severity=Important --setopt=install_weak_deps=False --sec-severity=Critical && \ - dnf -y install --disablerepo "*" --enablerepo "${REPOLIST}" --setopt=install_weak_deps=False --best \ - --setopt=tsflags=nodocs ${INSTALL_PKGS} && \ + microdnf -y install \ + --disablerepo "*" \ + --enablerepo "ubi-8-baseos" \ + --enablerepo "ubi-8-appstream" \ + --setopt=install_weak_deps=0 \ + --best \ + --setopt=tsflags=nodocs \ + ${INSTALL_PKGS} && \ groupadd --system --gid 1995 zabbix && \ useradd \ --system --comment "Zabbix monitoring system" \ @@ -56,44 +71,9 @@ RUN set -eux && INSTALL_PKGS="bash \ mkdir -p /etc/zabbix/ && \ mkdir -p /usr/sbin/zabbix_java/ && \ mkdir -p /usr/sbin/zabbix_java/ext_lib/ && \ - dnf -y clean all && \ - rm -rf /var/cache/yum /var/lib/yum/yumdb/* /usr/lib/udev/hwdb.d/* && \ - rm -rf /var/cache/dnf /etc/udev/hwdb.bin /root/.pki - -RUN set -eux && INSTALL_PKGS="autoconf \ - automake \ - pkgconf \ - git \ - gcc \ - make \ - java-1.8.0-openjdk-devel" && \ - REPOLIST="ubi-8-baseos,ubi-8-appstream" && \ - dnf -y install --disablerepo "*" --enablerepo "${REPOLIST}" --setopt=install_weak_deps=False --best \ - --setopt=tsflags=nodocs ${INSTALL_PKGS} && \ - cd /tmp/ && \ - git -c advice.detachedHead=false clone ${ZBX_SOURCES} --branch master --depth 1 --single-branch zabbix-${ZBX_VERSION} && \ - cd /tmp/zabbix-${ZBX_VERSION} && \ - zabbix_revision=`git rev-parse --short HEAD` && \ - sed -i "s/{ZABBIX_REVISION}/$zabbix_revision/g" include/version.h && \ - sed -i "s/{ZABBIX_REVISION}/$zabbix_revision/g" src/zabbix_java/src/com/zabbix/gateway/GeneralInformation.java && \ - ./bootstrap.sh && \ - ./configure \ - --datadir=/usr/lib \ - --libdir=/usr/lib/zabbix \ - --sysconfdir=/etc/zabbix \ - --prefix=/usr \ - --enable-java \ - --silent && \ - make -j"$(nproc)" -s && \ - mkdir -p /usr/sbin/zabbix_java/ && \ - cp -r src/zabbix_java/bin /usr/sbin/zabbix_java/ && \ - cp -r src/zabbix_java/lib /usr/sbin/zabbix_java/ && \ rm -rf /usr/sbin/zabbix_java/lib/logback.xml && \ mv /usr/sbin/zabbix_java/lib/logback-console.xml /etc/zabbix/zabbix_java_gateway_logback.xml && \ - cd /tmp/ && \ - rm -rf /tmp/zabbix-${ZBX_VERSION}/ && \ - dnf -y history undo last && \ - dnf -y clean all && \ + microdnf -y clean all && \ chown --quiet -R zabbix:root /etc/zabbix/ /usr/sbin/zabbix_java/ && \ chgrp -R 0 /etc/zabbix/ /usr/sbin/zabbix_java/ && \ chmod -R g=u /etc/zabbix/ /usr/sbin/zabbix_java/ && \ diff --git a/Dockerfiles/proxy-mysql/rhel/Dockerfile b/Dockerfiles/proxy-mysql/rhel/Dockerfile index 0fc385591..33650cbfc 100644 --- a/Dockerfiles/proxy-mysql/rhel/Dockerfile +++ b/Dockerfiles/proxy-mysql/rhel/Dockerfile @@ -1,11 +1,18 @@ -FROM registry.access.redhat.com/ubi8/ubi -MAINTAINER Alexey Pustovalov - +# syntax=docker/dockerfile:1 ARG MAJOR_VERSION=6.0 -ARG RELEASE= ARG ZBX_VERSION=${MAJOR_VERSION} - +ARG BUILD_BASE_IMAGE=zabbix-build-mysql:rhel-${ZBX_VERSION} ARG ZBX_SOURCES=https://git.zabbix.com/scm/zbx/zabbix.git + +FROM ${BUILD_BASE_IMAGE} as builder + +FROM registry.access.redhat.com/ubi8/ubi-minimal + +ARG MAJOR_VERSION +ARG RELEASE +ARG ZBX_VERSION +ARG ZBX_SOURCES + ENV TERM=xterm ZBX_VERSION=${ZBX_VERSION} ZBX_SOURCES=${ZBX_SOURCES} \ MIBDIRS=/usr/share/snmp/mibs:/var/lib/zabbix/mibs MIBS=+ALL @@ -38,9 +45,15 @@ LABEL name="zabbix/zabbix-proxy-mysql-trunk" \ STOPSIGNAL SIGTERM COPY ["licenses", "/licenses"] +COPY --from=builder ["/tmp/zabbix-${ZBX_VERSION}/src/zabbix_proxy/zabbix_proxy", "/usr/sbin/zabbix_proxy"] +COPY --from=builder ["/tmp/zabbix-${ZBX_VERSION}/src/zabbix_get/zabbix_get", "/usr/bin/zabbix_get"] +COPY --from=builder ["/tmp/zabbix-${ZBX_VERSION}/src/zabbix_sender/zabbix_sender", "/usr/bin/zabbix_sender"] +COPY --from=builder ["/tmp/zabbix-${ZBX_VERSION}/conf/zabbix_proxy.conf", "/etc/zabbix/zabbix_proxy.conf"] +COPY --from=builder ["/tmp/zabbix-${ZBX_VERSION}/database/mysql/create_proxy.sql.gz", "/usr/share/doc/zabbix-proxy-mysql/create.sql.gz"] RUN set -eux && INSTALL_PKGS="bash \ tini \ + shadow-utils \ fping \ iputils \ libcurl \ @@ -54,13 +67,21 @@ RUN set -eux && INSTALL_PKGS="bash \ OpenIPMI-libs \ pcre \ unixODBC" && \ - REPOLIST="ubi-8-baseos,ubi-8-appstream,rhel-8-for-x86_64-baseos-rpms,rhel-8-for-x86_64-appstream-rpms,epel" && \ - dnf -y update-minimal --disablerepo "*" --enablerepo "ubi-8-baseos" --setopt=tsflags=nodocs \ - --security --sec-severity=Important --setopt=install_weak_deps=False --sec-severity=Critical && \ - dnf -y install https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm && \ - dnf -y module enable mysql && \ - dnf -y install --disablerepo "*" --enablerepo "${REPOLIST}" --setopt=install_weak_deps=False --best \ - --setopt=tsflags=nodocs ${INSTALL_PKGS} && \ + curl -sSL -o /tmp/epel-release-latest-8.noarch.rpm https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm && \ + rpm -ivh /tmp/epel-release-latest-8.noarch.rpm && \ + rm -rf /tmp/epel-release-latest-8.noarch.rpm && \ + microdnf -y module enable mysql && \ + microdnf -y install \ + --disablerepo "*" \ + --enablerepo "ubi-8-baseos" \ + --enablerepo "ubi-8-appstream" \ + --enablerepo "rhel-8-for-x86_64-baseos-rpms" \ + --enablerepo "rhel-8-for-x86_64-appstream-rpms" \ + --enablerepo "epel" \ + --setopt=install_weak_deps=0 \ + --best \ + --setopt=tsflags=nodocs \ + ${INSTALL_PKGS} && \ groupadd --system --gid 1995 zabbix && \ useradd \ --system --comment "Zabbix monitoring system" \ @@ -82,66 +103,7 @@ RUN set -eux && INSTALL_PKGS="bash \ mkdir -p /var/lib/zabbix/ssl/keys && \ mkdir -p /var/lib/zabbix/ssl/ssl_ca && \ mkdir -p /usr/share/doc/zabbix-proxy-mysql && \ - dnf -y clean all && \ - rm -rf /var/cache/yum /var/lib/yum/yumdb/* /usr/lib/udev/hwdb.d/* && \ - rm -rf /var/cache/dnf /etc/udev/hwdb.bin /root/.pki - -RUN set -eux && INSTALL_PKGS="autoconf \ - automake \ - libcurl-devel \ - libevent-devel \ - libssh-devel \ - libxml2-devel \ - mysql-devel \ - net-snmp-devel \ - openldap-devel \ - OpenIPMI-devel \ - pcre-devel \ - git \ - gcc \ - make \ - unixODBC-devel" && \ - REPOLIST="ubi-8-baseos,ubi-8-appstream,rhel-8-for-x86_64-baseos-rpms,rhel-8-for-x86_64-appstream-rpms,codeready-builder-for-rhel-8-x86_64-rpms" && \ - dnf -y install --disablerepo "*" --enablerepo "${REPOLIST}" --setopt=install_weak_deps=False --best \ - --setopt=tsflags=nodocs ${INSTALL_PKGS} && \ - cd /tmp/ && \ - git -c advice.detachedHead=false clone ${ZBX_SOURCES} --branch master --depth 1 --single-branch zabbix-${ZBX_VERSION} && \ - cd /tmp/zabbix-${ZBX_VERSION} && \ - zabbix_revision=`git rev-parse --short HEAD` && \ - sed -i "s/{ZABBIX_REVISION}/$zabbix_revision/g" include/version.h && \ - ./bootstrap.sh && \ - export CFLAGS="-fPIC -pie -Wl,-z,relro -Wl,-z,now" && \ - ./configure \ - --datadir=/usr/lib \ - --libdir=/usr/lib/zabbix \ - --sysconfdir=/etc/zabbix \ - --prefix=/usr \ - --enable-agent \ - --enable-proxy \ - --with-mysql \ - --with-ldap \ - --with-libcurl \ - --with-libxml2 \ - --with-net-snmp \ - --with-openipmi \ - --with-openssl \ - --with-ssh \ - --with-unixodbc \ - --enable-ipv6 \ - --silent && \ - make -j"$(nproc)" -s dbschema && \ - make -j"$(nproc)" -s && \ - cp src/zabbix_proxy/zabbix_proxy /usr/sbin/zabbix_proxy && \ - cp src/zabbix_get/zabbix_get /usr/bin/zabbix_get && \ - cp src/zabbix_sender/zabbix_sender /usr/bin/zabbix_sender && \ - cp conf/zabbix_proxy.conf /etc/zabbix/zabbix_proxy.conf && \ - cat database/mysql/schema.sql > database/mysql/create.sql && \ - gzip database/mysql/create.sql && \ - cp database/mysql/create.sql.gz /usr/share/doc/zabbix-proxy-mysql/ && \ - cd /tmp/ && \ - rm -rf /tmp/zabbix-${ZBX_VERSION}/ && \ - dnf -y history undo last && \ - dnf -y clean all && \ + microdnf -y clean all && \ chown --quiet -R zabbix:root /etc/zabbix/ /var/lib/zabbix/ && \ chgrp -R 0 /etc/zabbix/ /var/lib/zabbix/ && \ chmod -R g=u /etc/zabbix/ /var/lib/zabbix/ && \ diff --git a/Dockerfiles/proxy-sqlite3/rhel/Dockerfile b/Dockerfiles/proxy-sqlite3/rhel/Dockerfile index deb679279..c83b022d5 100644 --- a/Dockerfiles/proxy-sqlite3/rhel/Dockerfile +++ b/Dockerfiles/proxy-sqlite3/rhel/Dockerfile @@ -1,11 +1,18 @@ -FROM registry.access.redhat.com/ubi8/ubi -MAINTAINER Alexey Pustovalov - +# syntax=docker/dockerfile:1 ARG MAJOR_VERSION=6.0 -ARG RELEASE= ARG ZBX_VERSION=${MAJOR_VERSION} - +ARG BUILD_BASE_IMAGE=zabbix-build-sqlite3:rhel-${ZBX_VERSION} ARG ZBX_SOURCES=https://git.zabbix.com/scm/zbx/zabbix.git + +FROM ${BUILD_BASE_IMAGE} as builder + +FROM registry.access.redhat.com/ubi8/ubi-minimal + +ARG MAJOR_VERSIO +ARG RELEASE +ARG ZBX_VERSION +ARG ZBX_SOURCES + ENV TERM=xterm ZBX_VERSION=${ZBX_VERSION} ZBX_SOURCES=${ZBX_SOURCES} \ MIBDIRS=/usr/share/snmp/mibs:/var/lib/zabbix/mibs MIBS=+ALL @@ -38,9 +45,14 @@ LABEL name="zabbix/zabbix-proxy-sqlite-trunk" \ STOPSIGNAL SIGTERM COPY ["licenses", "/licenses"] +COPY --from=builder ["/tmp/zabbix-${ZBX_VERSION}/src/zabbix_proxy/zabbix_proxy", "/usr/sbin/zabbix_proxy"] +COPY --from=builder ["/tmp/zabbix-${ZBX_VERSION}/src/zabbix_get/zabbix_get", "/usr/bin/zabbix_get"] +COPY --from=builder ["/tmp/zabbix-${ZBX_VERSION}/src/zabbix_sender/zabbix_sender", "/usr/bin/zabbix_sender"] +COPY --from=builder ["/tmp/zabbix-${ZBX_VERSION}/conf/zabbix_proxy.conf", "/etc/zabbix/zabbix_proxy.conf"] RUN set -eux && INSTALL_PKGS="bash \ tini \ + shadow-utils \ fping \ iputils \ libcurl \ @@ -53,12 +65,19 @@ RUN set -eux && INSTALL_PKGS="bash \ pcre \ sqlite-libs \ unixODBC" && \ - REPOLIST="ubi-8-baseos,ubi-8-appstream,rhel-8-for-x86_64-baseos-rpms,epel" && \ - dnf -y update-minimal --disablerepo "*" --enablerepo "ubi-8-baseos" --setopt=tsflags=nodocs \ - --security --sec-severity=Important --setopt=install_weak_deps=False --sec-severity=Critical && \ - dnf -y install https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm && \ - dnf -y install --disablerepo "*" --enablerepo "${REPOLIST}" --setopt=install_weak_deps=False --best \ - --setopt=tsflags=nodocs ${INSTALL_PKGS} && \ + curl -sSL -o /tmp/epel-release-latest-8.noarch.rpm https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm && \ + rpm -ivh /tmp/epel-release-latest-8.noarch.rpm && \ + rm -rf /tmp/epel-release-latest-8.noarch.rpm && \ + microdnf -y install \ + --disablerepo "*" \ + --enablerepo "ubi-8-baseos" \ + --enablerepo "ubi-8-appstream" \ + --enablerepo "rhel-8-for-x86_64-baseos-rpms" \ + --enablerepo "epel" \ + --setopt=install_weak_deps=0 \ + --best \ + --setopt=tsflags=nodocs \ + ${INSTALL_PKGS} && \ groupadd --system --gid 1995 zabbix && \ useradd \ --system --comment "Zabbix monitoring system" \ @@ -80,64 +99,7 @@ RUN set -eux && INSTALL_PKGS="bash \ mkdir -p /var/lib/zabbix/ssl/certs && \ mkdir -p /var/lib/zabbix/ssl/keys && \ mkdir -p /var/lib/zabbix/ssl/ssl_ca && \ - dnf -y clean all && \ - rm -rf /var/cache/yum /var/lib/yum/yumdb/* /usr/lib/udev/hwdb.d/* && \ - rm -rf /var/cache/dnf /etc/udev/hwdb.bin /root/.pki - -RUN set -eux && INSTALL_PKGS="autoconf \ - automake \ - libcurl-devel \ - libevent-devel \ - libssh-devel \ - libxml2-devel \ - sqlite-devel \ - net-snmp-devel \ - openldap-devel \ - OpenIPMI-devel \ - pcre-devel \ - git \ - gcc \ - make \ - unixODBC-devel" && \ - REPOLIST="ubi-8-baseos,ubi-8-appstream,rhel-8-for-x86_64-baseos-rpms,rhel-8-for-x86_64-appstream-rpms,codeready-builder-for-rhel-8-x86_64-rpms" && \ - dnf -y install --disablerepo "*" --enablerepo "${REPOLIST}" --setopt=install_weak_deps=False --best \ - --setopt=tsflags=nodocs ${INSTALL_PKGS} && \ - cd /tmp/ && \ - git -c advice.detachedHead=false clone ${ZBX_SOURCES} --branch master --depth 1 --single-branch zabbix-${ZBX_VERSION} && \ - cd /tmp/zabbix-${ZBX_VERSION} && \ - zabbix_revision=`git rev-parse --short HEAD` && \ - sed -i "s/{ZABBIX_REVISION}/$zabbix_revision/g" include/version.h && \ - ./bootstrap.sh && \ - export CFLAGS="-fPIC -pie -Wl,-z,relro -Wl,-z,now" && \ - ./configure \ - --datadir=/usr/lib \ - --libdir=/usr/lib/zabbix \ - --sysconfdir=/etc/zabbix \ - --prefix=/usr \ - --enable-agent \ - --enable-proxy \ - --with-sqlite3 \ - --with-ldap \ - --with-libcurl \ - --with-libxml2 \ - --with-net-snmp \ - --with-openipmi \ - --with-openssl \ - --with-ssh \ - --with-unixodbc \ - --enable-ipv6 \ - --silent && \ - make -j"$(nproc)" -s dbschema && \ - make -j"$(nproc)" -s && \ - cp src/zabbix_proxy/zabbix_proxy /usr/sbin/zabbix_proxy && \ - cp src/zabbix_get/zabbix_get /usr/bin/zabbix_get && \ - cp src/zabbix_sender/zabbix_sender /usr/bin/zabbix_sender && \ - cp conf/zabbix_proxy.conf /etc/zabbix/zabbix_proxy.conf && \ - chown --quiet -R zabbix:root /etc/zabbix && \ - cd /tmp/ && \ - rm -rf /tmp/zabbix-${ZBX_VERSION}/ && \ - dnf -y history undo last && \ - dnf -y clean all && \ + microdnf -y clean all && \ chown --quiet -R zabbix:root /etc/zabbix/ /var/lib/zabbix/ && \ chgrp -R 0 /etc/zabbix/ /var/lib/zabbix/ && \ chmod -R g=u /etc/zabbix/ /var/lib/zabbix/ && \ diff --git a/Dockerfiles/server-mysql/rhel/Dockerfile b/Dockerfiles/server-mysql/rhel/Dockerfile index d8944b6d8..d13d4d098 100644 --- a/Dockerfiles/server-mysql/rhel/Dockerfile +++ b/Dockerfiles/server-mysql/rhel/Dockerfile @@ -1,11 +1,18 @@ -FROM registry.access.redhat.com/ubi8/ubi -MAINTAINER Alexey Pustovalov - +# syntax=docker/dockerfile:1 ARG MAJOR_VERSION=6.0 -ARG RELEASE= ARG ZBX_VERSION=${MAJOR_VERSION} - +ARG BUILD_BASE_IMAGE=zabbix-build-mysql:rhel-${ZBX_VERSION} ARG ZBX_SOURCES=https://git.zabbix.com/scm/zbx/zabbix.git + +FROM ${BUILD_BASE_IMAGE} as builder + +FROM registry.access.redhat.com/ubi8/ubi-minimal + +ARG MAJOR_VERSION +ARG RELEASE +ARG ZBX_VERSION +ARG ZBX_SOURCES + ENV TERM=xterm ZBX_VERSION=${ZBX_VERSION} ZBX_SOURCES=${ZBX_SOURCES} \ MIBDIRS=/usr/share/snmp/mibs:/var/lib/zabbix/mibs MIBS=+ALL @@ -38,10 +45,16 @@ LABEL name="zabbix/zabbix-server-mysql-trunk" \ STOPSIGNAL SIGTERM COPY ["licenses", "/licenses"] +COPY --from=builder ["/tmp/zabbix-${ZBX_VERSION}/src/zabbix_server/zabbix_server", "/usr/sbin/zabbix_server"] +COPY --from=builder ["/tmp/zabbix-${ZBX_VERSION}/src/zabbix_get/zabbix_get", "/usr/bin/zabbix_get"] +COPY --from=builder ["/tmp/zabbix-${ZBX_VERSION}/src/zabbix_sender/zabbix_sender", "/usr/bin/zabbix_sender"] +COPY --from=builder ["/tmp/zabbix-${ZBX_VERSION}/conf/zabbix_server.conf", "/etc/zabbix/zabbix_server.conf"] +COPY --from=builder ["/tmp/zabbix-${ZBX_VERSION}/database/mysql/create_server.sql.gz", "/usr/share/doc/zabbix-server-mysql/create.sql.gz"] RUN set -eux && INSTALL_PKGS="bash \ tini \ fping \ + shadow-utils \ tzdata \ iputils \ libcurl \ @@ -55,13 +68,21 @@ RUN set -eux && INSTALL_PKGS="bash \ OpenIPMI-libs \ pcre \ unixODBC" && \ - REPOLIST="ubi-8-baseos,ubi-8-appstream,rhel-8-for-x86_64-baseos-rpms,rhel-8-for-x86_64-appstream-rpms,epel" && \ - dnf -y update-minimal --disablerepo "*" --enablerepo "ubi-8-baseos" --setopt=tsflags=nodocs \ - --security --sec-severity=Important --setopt=install_weak_deps=False --sec-severity=Critical && \ - dnf -y install https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm && \ - dnf -y module enable mysql && \ - dnf -y install --disablerepo "*" --enablerepo "${REPOLIST}" --setopt=install_weak_deps=False --best \ - --setopt=tsflags=nodocs ${INSTALL_PKGS} && \ + curl -sSL -o /tmp/epel-release-latest-8.noarch.rpm https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm && \ + rpm -ivh /tmp/epel-release-latest-8.noarch.rpm && \ + rm -rf /tmp/epel-release-latest-8.noarch.rpm && \ + microdnf -y module enable mysql && \ + microdnf -y install \ + --disablerepo "*" \ + --enablerepo "ubi-8-baseos" \ + --enablerepo "ubi-8-appstream" \ + --enablerepo "rhel-8-for-x86_64-baseos-rpms" \ + --enablerepo "rhel-8-for-x86_64-appstream-rpms" \ + --enablerepo "epel" \ + --setopt=install_weak_deps=0 \ + --best \ + --setopt=tsflags=nodocs \ + ${INSTALL_PKGS} && \ groupadd --system --gid 1995 zabbix && \ useradd \ --system --comment "Zabbix monitoring system" \ @@ -84,69 +105,7 @@ RUN set -eux && INSTALL_PKGS="bash \ mkdir -p /var/lib/zabbix/ssl/keys && \ mkdir -p /var/lib/zabbix/ssl/ssl_ca && \ mkdir -p /usr/share/doc/zabbix-server-mysql && \ - dnf -y clean all && \ - rm -rf /var/cache/yum /var/lib/yum/yumdb/* /usr/lib/udev/hwdb.d/* && \ - rm -rf /var/cache/dnf /etc/udev/hwdb.bin /root/.pki - -RUN set -eux && INSTALL_PKGS="autoconf \ - automake \ - libcurl-devel \ - libevent-devel \ - libssh-devel \ - libxml2-devel \ - mysql-devel \ - net-snmp-devel \ - openldap-devel \ - OpenIPMI-devel \ - pcre-devel \ - git \ - gcc \ - make \ - unixODBC-devel" && \ - REPOLIST="ubi-8-baseos,ubi-8-appstream,rhel-8-for-x86_64-baseos-rpms,rhel-8-for-x86_64-appstream-rpms,codeready-builder-for-rhel-8-x86_64-rpms" && \ - dnf -y install --disablerepo "*" --enablerepo "${REPOLIST}" --setopt=install_weak_deps=False --best \ - --setopt=tsflags=nodocs ${INSTALL_PKGS} && \ - cd /tmp/ && \ - git -c advice.detachedHead=false clone ${ZBX_SOURCES} --branch master --depth 1 --single-branch zabbix-${ZBX_VERSION} && \ - cd /tmp/zabbix-${ZBX_VERSION} && \ - zabbix_revision=`git rev-parse --short HEAD` && \ - sed -i "s/{ZABBIX_REVISION}/$zabbix_revision/g" include/version.h && \ - ./bootstrap.sh && \ - export CFLAGS="-fPIC -pie -Wl,-z,relro -Wl,-z,now" && \ - ./configure \ - --datadir=/usr/lib \ - --libdir=/usr/lib/zabbix \ - --prefix=/usr \ - --sysconfdir=/etc/zabbix \ - --enable-agent \ - --enable-server \ - --with-mysql \ - --with-ldap \ - --with-libcurl \ - --with-libxml2 \ - --with-net-snmp \ - --with-openipmi \ - --with-openssl \ - --with-ssh \ - --with-unixodbc \ - --enable-ipv6 \ - --silent && \ - make -j"$(nproc)" -s dbschema && \ - make -j"$(nproc)" -s && \ - cp src/zabbix_server/zabbix_server /usr/sbin/zabbix_server && \ - cp src/zabbix_get/zabbix_get /usr/bin/zabbix_get && \ - cp src/zabbix_sender/zabbix_sender /usr/bin/zabbix_sender && \ - cp conf/zabbix_server.conf /etc/zabbix/zabbix_server.conf && \ - chown --quiet -R zabbix:root /etc/zabbix && \ - cat database/mysql/schema.sql > database/mysql/create.sql && \ - cat database/mysql/images.sql >> database/mysql/create.sql && \ - cat database/mysql/data.sql >> database/mysql/create.sql && \ - gzip database/mysql/create.sql && \ - cp database/mysql/create.sql.gz /usr/share/doc/zabbix-server-mysql/ && \ - cd /tmp/ && \ - rm -rf /tmp/zabbix-${ZBX_VERSION}/ && \ - dnf -y history undo last && \ - dnf -y clean all && \ + microdnf -y clean all && \ chown --quiet -R zabbix:root /etc/zabbix/ /var/lib/zabbix/ && \ chgrp -R 0 /etc/zabbix/ /var/lib/zabbix/ && \ chmod -R g=u /etc/zabbix/ /var/lib/zabbix/ && \ diff --git a/Dockerfiles/snmptraps/rhel/Dockerfile b/Dockerfiles/snmptraps/rhel/Dockerfile index 26d1f9297..102349452 100644 --- a/Dockerfiles/snmptraps/rhel/Dockerfile +++ b/Dockerfiles/snmptraps/rhel/Dockerfile @@ -6,7 +6,6 @@ ARG RELEASE= ARG ZBX_VERSION=${MAJOR_VERSION} ARG ZBX_SOURCES=https://git.zabbix.com/scm/zbx/zabbix.git -ENV ZBX_VERSION=${ZBX_VERSION} ZBX_SOURCES=${ZBX_SOURCES} ENV TERM=xterm ZBX_VERSION=${ZBX_VERSION} ZBX_SOURCES=${ZBX_SOURCES} \ MIBDIRS=/usr/share/snmp/mibs:/var/lib/zabbix/mibs MIBS=+ALL \ @@ -47,9 +46,14 @@ RUN set -eux && \ shadow-utils \ tzdata \ net-snmp" && \ - microdnf -y --disablerepo="*" --enablerepo="rhel-8-for-x86_64-baseos-rpms" \ + microdnf -y install \ + --disablerepo="*" \ + --enablerepo="rhel-8-for-x86_64-baseos-rpms" \ --enablerepo="rhel-8-for-x86_64-appstream-rpms" \ - install --setopt=install_weak_deps=0 --best --nodocs ${INSTALL_PKGS} && \ + --setopt=install_weak_deps=0 \ + --best \ + --setopt=tsflags=nodocs \ + ${INSTALL_PKGS} && \ groupadd --system --gid 1995 zabbix && \ useradd \ --system --comment "Zabbix monitoring system" \ diff --git a/Dockerfiles/web-nginx-mysql/rhel/Dockerfile b/Dockerfiles/web-nginx-mysql/rhel/Dockerfile index d4b13783e..485a7fced 100644 --- a/Dockerfiles/web-nginx-mysql/rhel/Dockerfile +++ b/Dockerfiles/web-nginx-mysql/rhel/Dockerfile @@ -1,12 +1,19 @@ -FROM registry.access.redhat.com/ubi8/ubi -MAINTAINER Alexey Pustovalov - +# syntax=docker/dockerfile:1 ARG MAJOR_VERSION=6.0 -ARG RELEASE= ARG ZBX_VERSION=${MAJOR_VERSION} - +ARG BUILD_BASE_IMAGE=zabbix-build-mysql:rhel-${ZBX_VERSION} ARG ZBX_SOURCES=https://git.zabbix.com/scm/zbx/zabbix.git -ENV ZBX_VERSION=${ZBX_VERSION} ZBX_SOURCES=${ZBX_SOURCES} + +FROM ${BUILD_BASE_IMAGE} as builder + +FROM registry.access.redhat.com/ubi8/ubi-minimal + +ARG MAJOR_VERSION +ARG RELEASE +ARG ZBX_VERSION +ARG ZBX_SOURCES + +ENV TERM=xterm ZBX_VERSION=${ZBX_VERSION} ZBX_SOURCES=${ZBX_SOURCES} LABEL name="zabbix/zabbix-web-mysql" \ maintainer="alexey.pustovalov@zabbix.com" \ @@ -36,13 +43,17 @@ LABEL name="zabbix/zabbix-web-mysql" \ STOPSIGNAL SIGTERM -COPY ["conf/etc/yum.repo.d/nginx.repo", "/etc/yum.repos.d/nginx.repo"] - COPY ["licenses", "/licenses"] +COPY ["conf/etc/", "/etc/"] +COPY --from=builder ["/tmp/zabbix-${ZBX_VERSION}/ui", "/usr/share/zabbix"] RUN set -eux && INSTALL_PKGS="bash \ + tzdata \ curl \ supervisor \ + shadow-utils \ + findutils \ + glibc-locale-source \ mysql \ nginx \ php-bcmath \ @@ -53,14 +64,22 @@ RUN set -eux && INSTALL_PKGS="bash \ php-mbstring \ php-mysqlnd \ php-xml" && \ - REPOLIST="ubi-8-baseos,ubi-8-appstream,rhel-8-for-x86_64-baseos-rpms,rhel-8-for-x86_64-appstream-rpms,epel" && \ - dnf -y update-minimal --disablerepo "*" --enablerepo "ubi-8-baseos" --setopt=tsflags=nodocs \ - --security --sec-severity=Important --setopt=install_weak_deps=False --sec-severity=Critical && \ - dnf -y module enable mysql && \ - dnf -y module enable php:7.4 nginx:1.18 && \ - dnf -y install https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm && \ - dnf -y install --disablerepo "*" --enablerepo "${REPOLIST}" --setopt=install_weak_deps=False --best \ - --setopt=tsflags=nodocs ${INSTALL_PKGS} && \ + curl -sSL -o /tmp/epel-release-latest-8.noarch.rpm https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm && \ + rpm -ivh /tmp/epel-release-latest-8.noarch.rpm && \ + rm -rf /tmp/epel-release-latest-8.noarch.rpm && \ + microdnf -y module enable mysql && \ + microdnf -y module enable php:7.4 nginx:1.18 && \ + microdnf -y install \ + --disablerepo "*" \ + --enablerepo "ubi-8-baseos" \ + --enablerepo "ubi-8-appstream" \ + --enablerepo "rhel-8-for-x86_64-baseos-rpms" \ + --enablerepo "rhel-8-for-x86_64-appstream-rpms" \ + --enablerepo "epel" \ + --setopt=install_weak_deps=0 \ + --best \ + --setopt=tsflags=nodocs \ + ${INSTALL_PKGS} && \ groupadd --system --gid 1995 zabbix && \ useradd \ --system --comment "Zabbix monitoring system" \ @@ -75,24 +94,7 @@ RUN set -eux && INSTALL_PKGS="bash \ mkdir -p /var/lib/php/session && \ rm -f /etc/nginx/conf.d/*.conf && \ rm -f /etc/php-fpm.d/www.conf && \ - dnf -y clean all && \ - rm -rf /var/cache/yum /var/lib/yum/yumdb/* /usr/lib/udev/hwdb.d/* && \ - rm -rf /var/cache/dnf /etc/udev/hwdb.bin /root/.pki - -COPY ["conf/etc/", "/etc/"] - -RUN set -eux && REPOLIST="ubi-8-baseos,ubi-8-appstream,rhel-8-for-x86_64-baseos-rpms,rhel-8-for-x86_64-appstream-rpms" && \ - INSTALL_PKGS="glibc-locale-source gettext \ - git" && \ - dnf -y install --disablerepo "*" --enablerepo "${REPOLIST}" --setopt=install_weak_deps=False --best \ - --setopt=tsflags=nodocs ${INSTALL_PKGS} && \ - cd /usr/share/ && \ - git -c advice.detachedHead=false clone ${ZBX_SOURCES} --branch master --depth 1 --single-branch zabbix-${ZBX_VERSION} && \ - mkdir /usr/share/zabbix/ && \ - cp -R /usr/share/zabbix-${ZBX_VERSION}/ui/* /usr/share/zabbix/ && \ - rm -rf /usr/share/zabbix-${ZBX_VERSION}/ && \ cd /usr/share/zabbix/ && \ - ./locale/make_mo.sh && \ rm -f conf/zabbix.conf.php conf/maintenance.inc.php conf/zabbix.conf.php.example && \ rm -rf tests && \ rm -f locale/add_new_language.sh locale/update_po.sh locale/make_mo.sh && \ @@ -103,9 +105,9 @@ RUN set -eux && REPOLIST="ubi-8-baseos,ubi-8-appstream,rhel-8-for-x86_64-baseos- cat /usr/share/zabbix/include/locales.inc.php | grep display | grep true | awk '{$1=$1};1' | \ cut -d"'" -f 2 | sort | \ xargs -I '{}' bash -c 'echo "{}" && localedef -c -i {} -f UTF-8 {}.UTF-8 2>/dev/null' && \ - chown --quiet -R zabbix:root /etc/zabbix/ /usr/share/zabbix/conf/ /usr/share/zabbix/modules/ && \ - chgrp -R 0 /etc/zabbix/ /usr/share/zabbix/conf/ /usr/share/zabbix/modules/ && \ - chmod -R g=u /etc/zabbix/ /usr/share/zabbix/conf/ /usr/share/zabbix/modules/ && \ + chown --quiet -R zabbix:root /etc/zabbix/ /usr/share/zabbix/modules/ && \ + chgrp -R 0 /etc/zabbix/ /usr/share/zabbix/modules/ && \ + chmod -R g=u /etc/zabbix/ /usr/share/zabbix/modules/ && \ chown --quiet -R zabbix:root /etc/nginx/ /etc/php-fpm.d/ /etc/php-fpm.conf && \ chgrp -R 0 /etc/nginx/ /etc/php-fpm.d/ /etc/php-fpm.conf && \ chmod -R g=u /etc/nginx/ /etc/php-fpm.d/ /etc/php-fpm.conf && \ @@ -115,9 +117,10 @@ RUN set -eux && REPOLIST="ubi-8-baseos,ubi-8-appstream,rhel-8-for-x86_64-baseos- chown --quiet -R zabbix:root /usr/share/zabbix/include/defines.inc.php && \ chgrp -R 0 /usr/share/zabbix/include/defines.inc.php && \ chmod -R g=u /usr/share/zabbix/include/defines.inc.php && \ - dnf -y history undo last && \ - dnf -y autoremove glibc-langpack-en && \ - dnf -y clean all && \ + microdnf -y remove \ + findutils \ + glibc-locale-source && \ + microdnf -y clean all && \ rm -rf /var/cache/yum /var/lib/yum/yumdb/* /usr/lib/udev/hwdb.d/* && \ rm -rf /var/cache/dnf /etc/udev/hwdb.bin /root/.pki diff --git a/Dockerfiles/web-service/rhel/Dockerfile b/Dockerfiles/web-service/rhel/Dockerfile index 38cc45bc1..78d270d2c 100644 --- a/Dockerfiles/web-service/rhel/Dockerfile +++ b/Dockerfiles/web-service/rhel/Dockerfile @@ -1,12 +1,19 @@ -FROM registry.access.redhat.com/ubi8/ubi -MAINTAINER Alexey Pustovalov - +# syntax=docker/dockerfile:1 ARG MAJOR_VERSION=6.0 -ARG RELEASE= ARG ZBX_VERSION=${MAJOR_VERSION} - +ARG BUILD_BASE_IMAGE=zabbix-build-mysql:rhel-${ZBX_VERSION} ARG ZBX_SOURCES=https://git.zabbix.com/scm/zbx/zabbix.git -ENV ZBX_VERSION=${ZBX_VERSION} ZBX_SOURCES=${ZBX_SOURCES} + +FROM ${BUILD_BASE_IMAGE} as builder + +FROM registry.access.redhat.com/ubi8/ubi-minimal + +ARG MAJOR_VERSION +ARG RELEASE +ARG ZBX_VERSION +ARG ZBX_SOURCES + +ENV TERM=xterm ZBX_VERSION=${ZBX_VERSION} ZBX_SOURCES=${ZBX_SOURCES} LABEL name="zabbix/zabbix-web-service-trunk" \ maintainer="alexey.pustovalov@zabbix.com" \ @@ -37,17 +44,29 @@ LABEL name="zabbix/zabbix-web-service-trunk" \ STOPSIGNAL SIGTERM COPY ["licenses", "/licenses"] +COPY --from=builder ["/tmp/zabbix-${ZBX_VERSION}/src/go/bin/zabbix_web_service", "/usr/sbin/zabbix_web_service"] +COPY --from=builder ["/tmp/zabbix-${ZBX_VERSION}/src/go/conf/zabbix_web_service.conf", "/etc/zabbix/zabbix_web_service.conf"] -RUN set -eux && INSTALL_PKGS="bash \ +RUN set -eux && \ + INSTALL_PKGS="bash \ + shadow-utils \ chromium \ openssl-libs \ zlib" && \ - REPOLIST="rhel-8-for-x86_64-baseos-rpms,rhel-8-for-x86_64-appstream-rpms,epel" && \ - dnf -y update-minimal --disablerepo "*" --enablerepo ubi-8-baseos --setopt=tsflags=nodocs \ - --security --sec-severity=Important --sec-severity=Critical && \ - dnf -y install https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm && \ - dnf -y install --disablerepo "*" --enablerepo "${REPOLIST}" --setopt=install_weak_deps=False --best \ - --setopt=tsflags=nodocs ${INSTALL_PKGS} && \ + curl -sSL -o /tmp/epel-release-latest-8.noarch.rpm https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm && \ + rpm -ivh /tmp/epel-release-latest-8.noarch.rpm && \ + rm -rf /tmp/epel-release-latest-8.noarch.rpm && \ + microdnf -y install \ + --disablerepo "*" \ + --enablerepo "ubi-8-baseos" \ + --enablerepo "ubi-8-appstream" \ + --enablerepo "rhel-8-for-x86_64-baseos-rpms" \ + --enablerepo "rhel-8-for-x86_64-appstream-rpms" \ + --enablerepo "epel" \ + --setopt=install_weak_deps=0 \ + --best \ + --setopt=tsflags=nodocs \ + ${INSTALL_PKGS} && \ groupadd --system --gid 1995 zabbix && \ useradd \ --system --comment "Zabbix monitoring system" \ @@ -59,44 +78,7 @@ RUN set -eux && INSTALL_PKGS="bash \ mkdir -p /etc/zabbix && \ mkdir -p /var/lib/zabbix && \ mkdir -p /var/lib/zabbix/enc && \ - dnf -y clean all && \ - rm -rf /var/cache/yum /var/lib/yum/yumdb/* /usr/lib/udev/hwdb.d/* && \ - rm -rf /var/cache/dnf /etc/udev/hwdb.bin /root/.pki - -RUN set -eux && REPOLIST="rhel-8-for-x86_64-baseos-rpms,rhel-8-for-x86_64-appstream-rpms" && \ - INSTALL_PKGS="autoconf \ - automake \ - gcc \ - make \ - golang \ - git" && \ - dnf -y install --disablerepo "*" --enablerepo "${REPOLIST}" --setopt=install_weak_deps=False --best \ - --setopt=tsflags=nodocs ${INSTALL_PKGS} && \ - cd /tmp/ && \ - git -c advice.detachedHead=false clone ${ZBX_SOURCES} --branch master --depth 1 --single-branch zabbix-${ZBX_VERSION} && \ - cd /tmp/zabbix-${ZBX_VERSION} && \ - zabbix_revision=`git rev-parse --short HEAD` && \ - sed -i "s/{ZABBIX_REVISION}/$zabbix_revision/g" include/version.h && \ - ./bootstrap.sh && \ - export CFLAGS="-fPIC -pie -Wl,-z,relro -Wl,-z,now" && \ - ./configure \ - --datadir=/usr/lib \ - --libdir=/usr/lib/zabbix \ - --prefix=/usr \ - --sysconfdir=/etc/zabbix \ - --prefix=/usr \ - --enable-webservice \ - --silent && \ - make -j"$(nproc)" -s && \ - cp /tmp/zabbix-${ZBX_VERSION}/src/go/bin/zabbix_web_service /usr/sbin/zabbix_web_service && \ - cp /tmp/zabbix-${ZBX_VERSION}/src/go/conf/zabbix_web_service.conf /etc/zabbix/zabbix_web_service.conf && \ - cd /tmp/ && \ - rm -rf /tmp/zabbix-${ZBX_VERSION}/ && \ - chown --quiet -R zabbix:root /etc/zabbix/ /var/lib/zabbix/ && \ - chgrp -R 0 /etc/zabbix/ /var/lib/zabbix/ && \ - chmod -R g=u /etc/zabbix/ /var/lib/zabbix/ && \ - dnf -y history undo `dnf -q history | sed -n 3p |column -t | cut -d' ' -f1` && \ - dnf -y clean all && \ + microdnf -y clean all && \ rm -rf /var/cache/yum /var/lib/yum/yumdb/* /usr/lib/udev/hwdb.d/* && \ rm -rf /var/cache/dnf /etc/udev/hwdb.bin /root/.pki