From 04b3fe20602f7386c39514b5701a686a8a67260e Mon Sep 17 00:00:00 2001 From: root Date: Tue, 29 May 2018 05:23:20 -0700 Subject: [PATCH 1/6] Zabbix Appliance multistage images --- zabbix-appliance/alpine/Dockerfile | 190 ++++++++++++------------ zabbix-appliance/ubuntu/Dockerfile | 230 +++++++++++++---------------- 2 files changed, 202 insertions(+), 218 deletions(-) diff --git a/zabbix-appliance/alpine/Dockerfile b/zabbix-appliance/alpine/Dockerfile index 9e45ae589..a2fb1b1c5 100644 --- a/zabbix-appliance/alpine/Dockerfile +++ b/zabbix-appliance/alpine/Dockerfile @@ -1,3 +1,78 @@ +FROM alpine:3.4 as builder + +ARG APK_FLAGS_COMMON="-q" +ARG APK_FLAGS_DEV="${APK_FLAGS_COMMON} --no-cache" +ARG MAJOR_VERSION=master +ARG ZBX_VERSION=${MAJOR_VERSION} +ARG ZBX_SOURCES=svn://svn.zabbix.com/tags/${ZBX_VERSION}/ +ENV ZBX_VERSION=${ZBX_VERSION} ZBX_SOURCES=${ZBX_SOURCES} \ + PATH=${PATH}:/usr/lib/jvm/default-jvm/bin/ JAVA_HOME=/usr/lib/jvm/default-jvm \ + ZBX_TYPE=server ZBX_DB_TYPE=mysql ZBX_OPT_TYPE=nginx \ + MYSQL_ALLOW_EMPTY_PASSWORD=true ZBX_ADD_SERVER=true ZBX_ADD_WEB=true DB_SERVER_HOST=localhost MYSQL_USER=zabbix ZBX_ADD_JAVA_GATEWAY=true ZBX_JAVAGATEWAY_ENABLE=true ZBX_JAVAGATEWAY=localhost + +COPY ["conf/tmp/font-config", "/tmp/font-config"] + +RUN apk add ${APK_FLAGS_DEV} --virtual build-dependencies \ + bash \ + alpine-sdk \ + autoconf \ + automake \ + coreutils \ + curl-dev \ + gettext \ + libssh2-dev \ + libxml2-dev \ + mysql-dev \ + net-snmp-dev \ + openipmi-dev \ + openjdk8 \ + openldap-dev \ + subversion \ + unixodbc-dev && \ + cd /tmp/ && \ + svn --quiet export ${ZBX_SOURCES} zabbix-${ZBX_VERSION} 1>/dev/null && \ + cd /tmp/zabbix-${ZBX_VERSION} && \ + zabbix_revision=`svn info ${ZBX_SOURCES} |grep "Last Changed Rev"|awk '{print $4;}'` && \ + sed -i "s/{ZABBIX_REVISION}/$zabbix_revision/g" include/version.h && \ + 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 1>/dev/null && \ + 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-${ZBX_TYPE} \ + --with-${ZBX_DB_TYPE} \ +# Does not support stable iksemel library +# --with-jabber \ + --with-ldap \ + --with-libcurl \ + --with-libxml2 \ + --enable-java \ + --with-net-snmp \ + --with-openipmi \ + --with-openssl \ + --with-ssh2 \ + --with-unixodbc \ + --enable-ipv6 \ + --silent && \ + make -j"$(nproc)" -s dbschema 1>/dev/null && \ + make -j"$(nproc)" -s 1>/dev/null && \ + cat database/${ZBX_DB_TYPE}/schema.sql > database/${ZBX_DB_TYPE}/create.sql && \ + cat database/${ZBX_DB_TYPE}/images.sql >> database/${ZBX_DB_TYPE}/create.sql && \ + cat database/${ZBX_DB_TYPE}/data.sql >> database/${ZBX_DB_TYPE}/create.sql && \ + gzip database/${ZBX_DB_TYPE}/create.sql && \ + rm -rf /tmp/zabbix-${ZBX_VERSION}/src/zabbix_java/lib/*.xml && \ + cd frontends/php/ && \ + patch -p3 < /tmp/font-config && \ + rm -f conf/zabbix.conf.php && \ + rm -rf tests && \ + rm /tmp/zabbix-${ZBX_VERSION}/frontends/php/fonts/DejaVuSans.ttf && \ + ./locale/make_mo.sh + FROM alpine:3.4 LABEL maintainer="Alexey Pustovalov " @@ -6,8 +81,11 @@ ARG VCS_REF ARG APK_FLAGS_COMMON="-q" ARG APK_FLAGS_PERSISTANT="${APK_FLAGS_COMMON} --clean-protected --no-cache" -ARG APK_FLAGS_DEV="${APK_FLAGS_COMMON} --no-cache" -ENV MIBDIRS=/usr/share/snmp/mibs:/var/lib/zabbix/mibs MIBS=+ALL PATH=${PATH}:/usr/lib/jvm/default-jvm/bin/ JAVA_HOME=/usr/lib/jvm/default-jvm \ +ARG MAJOR_VERSION=master +ARG ZBX_VERSION=${MAJOR_VERSION} +ARG ZBX_SOURCES=svn://svn.zabbix.com/tags/${ZBX_VERSION}/ +ENV ZBX_VERSION=${ZBX_VERSION} ZBX_SOURCES=${ZBX_SOURCES} \ + MIBDIRS=/usr/share/snmp/mibs:/var/lib/zabbix/mibs MIBS=+ALL PATH=${PATH}:/usr/lib/jvm/default-jvm/bin/ JAVA_HOME=/usr/lib/jvm/default-jvm \ ZBX_TYPE=server ZBX_DB_TYPE=mysql ZBX_OPT_TYPE=nginx \ MYSQL_ALLOW_EMPTY_PASSWORD=true ZBX_ADD_SERVER=true ZBX_ADD_WEB=true DB_SERVER_HOST=localhost MYSQL_USER=zabbix ZBX_ADD_JAVA_GATEWAY=true ZBX_JAVAGATEWAY_ENABLE=true ZBX_JAVAGATEWAY=localhost @@ -18,10 +96,25 @@ LABEL org.label-schema.name="zabbix-${ZBX_TYPE}-${ZBX_DB_TYPE}-alpine" \ org.label-schema.vcs-ref="${VCS_REF}" \ org.label-schema.build-date="${BUILD_DATE}" \ org.label-schema.schema-version="1.0" \ - org.label-schema.license="GPL 2.0" + org.label-schema.license="GPL 2.0" \ + org.label-schema.usage="https://www.zabbix.com/documentation/${MAJOR_VERSION}/manual/installation/containers" \ + org.label-schema.version="${ZBX_VERSION}" \ + org.label-schema.vcs-url="${ZBX_SOURCES}" \ + org.label-schema.docker.cmd="docker run --name zabbix-appliance -p 80:80 -p 10051:10051 -d zabbix-appliance:alpine-${ZBX_VERSION}" STOPSIGNAL SIGTERM +COPY --from=builder /tmp/zabbix-${ZBX_VERSION}/src/zabbix_${ZBX_TYPE}/zabbix_${ZBX_TYPE} /usr/sbin/zabbix_${ZBX_TYPE} +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_${ZBX_TYPE}.conf /etc/zabbix/zabbix_${ZBX_TYPE}.conf +COPY --from=builder /tmp/zabbix-${ZBX_VERSION}/database/${ZBX_DB_TYPE}/create.sql.gz /usr/share/doc/zabbix-${ZBX_TYPE}-${ZBX_DB_TYPE}/create.sql.gz + +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/ + +COPY --from=builder /tmp/zabbix-${ZBX_VERSION}/frontends/php/ /usr/share/zabbix/ + RUN addgroup zabbix && \ adduser -S \ -D -G zabbix \ @@ -74,97 +167,6 @@ RUN addgroup zabbix && \ unixodbc && \ rm -rf /var/cache/apk/* -ARG MAJOR_VERSION=master -ARG ZBX_VERSION=${MAJOR_VERSION} -ARG ZBX_SOURCES=svn://svn.zabbix.com/tags/${ZBX_VERSION}/ -ENV ZBX_VERSION=${ZBX_VERSION} ZBX_SOURCES=${ZBX_SOURCES} - -LABEL org.label-schema.usage="https://www.zabbix.com/documentation/${MAJOR_VERSION}/manual/installation/containers" \ - org.label-schema.version="${ZBX_VERSION}" \ - org.label-schema.vcs-url="${ZBX_SOURCES}" \ - org.label-schema.docker.cmd="docker run --name zabbix-appliance -p 80:80 -p 10051:10051 -d zabbix-appliance:alpine-${ZBX_VERSION}" - -COPY ["conf/tmp/font-config", "/tmp/font-config"] - -RUN apk add ${APK_FLAGS_DEV} --virtual build-dependencies \ - alpine-sdk \ - autoconf \ - automake \ - coreutils \ - curl-dev \ - gettext \ - libssh2-dev \ - libxml2-dev \ - mysql-dev \ - net-snmp-dev \ - openipmi-dev \ - openjdk8 \ - openldap-dev \ - subversion \ - unixodbc-dev && \ - cd /tmp/ && \ - svn --quiet export ${ZBX_SOURCES} zabbix-${ZBX_VERSION} 1>/dev/null && \ - cd /tmp/zabbix-${ZBX_VERSION} && \ - zabbix_revision=`svn info ${ZBX_SOURCES} |grep "Last Changed Rev"|awk '{print $4;}'` && \ - sed -i "s/{ZABBIX_REVISION}/$zabbix_revision/g" include/version.h && \ - 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 1>/dev/null && \ - 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-${ZBX_TYPE} \ - --with-${ZBX_DB_TYPE} \ -# Does not support stable iksemel library -# --with-jabber \ - --with-ldap \ - --with-libcurl \ - --with-libxml2 \ - --enable-java \ - --with-net-snmp \ - --with-openipmi \ - --with-openssl \ - --with-ssh2 \ - --with-unixodbc \ - --enable-ipv6 \ - --silent && \ - make -j"$(nproc)" -s dbschema 1>/dev/null && \ - make -j"$(nproc)" -s 1>/dev/null && \ - cp src/zabbix_${ZBX_TYPE}/zabbix_${ZBX_TYPE} /usr/sbin/zabbix_${ZBX_TYPE} && \ - cp src/zabbix_get/zabbix_get /usr/bin/zabbix_get && \ - cp src/zabbix_sender/zabbix_sender /usr/bin/zabbix_sender && \ - cp conf/zabbix_${ZBX_TYPE}.conf /etc/zabbix/zabbix_${ZBX_TYPE}.conf && \ - chown --quiet -R zabbix:root /etc/zabbix && \ - cat database/${ZBX_DB_TYPE}/schema.sql > database/${ZBX_DB_TYPE}/create.sql && \ - cat database/${ZBX_DB_TYPE}/images.sql >> database/${ZBX_DB_TYPE}/create.sql && \ - cat database/${ZBX_DB_TYPE}/data.sql >> database/${ZBX_DB_TYPE}/create.sql && \ - gzip database/${ZBX_DB_TYPE}/create.sql && \ - cp database/${ZBX_DB_TYPE}/create.sql.gz /usr/share/doc/zabbix-${ZBX_TYPE}-${ZBX_DB_TYPE}/ && \ - 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/*.xml && \ - cd /tmp/ && \ - rm -rf /tmp/zabbix-${ZBX_VERSION}/ && \ - cd /usr/share/ && \ - svn --quiet export ${ZBX_SOURCES}/frontends/php/ zabbix 1>/dev/null && \ - cd /usr/share/zabbix/ && \ - patch -p3 < /tmp/font-config && \ - rm /tmp/font-config && \ - rm -f conf/zabbix.conf.php && \ - rm -rf tests && \ - rm /usr/share/zabbix/fonts/DejaVuSans.ttf && \ - ./locale/make_mo.sh 2>/dev/null && \ - ln -s /usr/share/fonts/ttf-dejavu/DejaVuSans.ttf /usr/share/zabbix/fonts/graphfont.ttf && \ - apk del ${APK_FLAGS_COMMON} --purge \ - build-dependencies && \ - rm -rf /var/cache/apk/* && \ - rm -rf /root/.subversion - EXPOSE 80/TCP 443/TCP 10051/TCP WORKDIR /var/lib/zabbix diff --git a/zabbix-appliance/ubuntu/Dockerfile b/zabbix-appliance/ubuntu/Dockerfile index bcc83400c..a5c00dc7d 100644 --- a/zabbix-appliance/ubuntu/Dockerfile +++ b/zabbix-appliance/ubuntu/Dockerfile @@ -1,3 +1,83 @@ +FROM ubuntu:trusty as builder + +ARG APT_FLAGS_COMMON="-qq -y" +ARG APT_FLAGS_DEV="${APT_FLAGS_COMMON} --no-install-recommends" +ARG MAJOR_VERSION=master +ARG ZBX_VERSION=${MAJOR_VERSION} +ARG ZBX_SOURCES=svn://svn.zabbix.com/tags/${ZBX_VERSION}/ +ENV ZBX_VERSION=${ZBX_VERSION} ZBX_SOURCES=${ZBX_SOURCES} \ + LANG=en_US.UTF-8 LANGUAGE=en_US:en LC_ALL=en_US.UTF-8 DEBIAN_FRONTEND=noninteractive TERM=xterm \ + MIBDIRS=/var/lib/mibs/iana:/var/lib/mibs/ietf:/usr/share/snmp/mibs:/var/lib/zabbix/mibs MIBS=+ALL \ + ZBX_TYPE=server ZBX_DB_TYPE=mysql ZBX_OPT_TYPE=nginx \ + MYSQL_ALLOW_EMPTY_PASSWORD=true ZBX_ADD_SERVER=true ZBX_ADD_WEB=true DB_SERVER_HOST=localhost MYSQL_USER=zabbix ZBX_ADD_JAVA_GATEWAY=true ZBX_JAVAGATEWAY_ENABLE=true ZBX_JAVAGATEWAY=localhost + +COPY ["conf/tmp/font-config", "/tmp/font-config"] + +RUN locale-gen $LC_ALL && \ + apt-get ${APT_FLAGS_COMMON} update && \ + apt-get ${APT_FLAGS_DEV} install \ + autoconf \ + automake \ + gcc \ + gettext \ + libc6-dev \ + libcurl4-openssl-dev \ + libiksemel-dev \ + libldap2-dev \ + libmysqlclient-dev \ + libopenipmi-dev \ + libsnmp-dev \ + libssh2-1-dev \ + libxml2-dev \ + make \ + openjdk-7-jdk \ + patch \ + pkg-config \ + subversion \ + unixodbc-dev 1>/dev/null && \ + cd /tmp/ && \ + svn --quiet export ${ZBX_SOURCES} zabbix-${ZBX_VERSION} 1>/dev/null && \ + cd /tmp/zabbix-${ZBX_VERSION} && \ + zabbix_revision=`svn info ${ZBX_SOURCES} |grep "Last Changed Rev"|awk '{print $4;}'` && \ + sed -i "s/{ZABBIX_REVISION}/$zabbix_revision/g" include/version.h && \ + 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 1>/dev/null && \ + 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-${ZBX_TYPE} \ + --with-${ZBX_DB_TYPE} \ + --with-jabber \ + --with-ldap \ + --with-libcurl \ + --with-libxml2 \ + --enable-java \ + --with-net-snmp \ + --with-openipmi \ + --with-openssl \ + --with-ssh2 \ + --with-unixodbc \ + --enable-ipv6 \ + --silent && \ + make -j"$(nproc)" -s dbschema 1>/dev/null && \ + make -j"$(nproc)" -s 1>/dev/null && \ + cat database/${ZBX_DB_TYPE}/schema.sql > database/${ZBX_DB_TYPE}/create.sql && \ + cat database/${ZBX_DB_TYPE}/images.sql >> database/${ZBX_DB_TYPE}/create.sql && \ + cat database/${ZBX_DB_TYPE}/data.sql >> database/${ZBX_DB_TYPE}/create.sql && \ + gzip database/${ZBX_DB_TYPE}/create.sql && \ + rm -rf /tmp/zabbix-${ZBX_VERSION}/src/zabbix_java/lib/*.xml && \ + cd frontends/php/ && \ + patch -p3 < /tmp/font-config && \ + rm -f conf/zabbix.conf.php && \ + rm -rf tests && \ + rm /tmp/zabbix-${ZBX_VERSION}/frontends/php/fonts/DejaVuSans.ttf && \ + ./locale/make_mo.sh 2>/dev/null + FROM ubuntu:trusty LABEL maintainer="Alexey Pustovalov " @@ -6,8 +86,11 @@ ARG VCS_REF ARG APT_FLAGS_COMMON="-qq -y" ARG APT_FLAGS_PERSISTANT="${APT_FLAGS_COMMON} --no-install-recommends" -ARG APT_FLAGS_DEV="${APT_FLAGS_COMMON} --no-install-recommends" -ENV LANG=en_US.UTF-8 LANGUAGE=en_US:en LC_ALL=en_US.UTF-8 DEBIAN_FRONTEND=noninteractive TERM=xterm \ +ARG MAJOR_VERSION=master +ARG ZBX_VERSION=${MAJOR_VERSION} +ARG ZBX_SOURCES=svn://svn.zabbix.com/tags/${ZBX_VERSION}/ +ENV ZBX_VERSION=${ZBX_VERSION} ZBX_SOURCES=${ZBX_SOURCES} \ + LANG=en_US.UTF-8 LANGUAGE=en_US:en LC_ALL=en_US.UTF-8 DEBIAN_FRONTEND=noninteractive TERM=xterm \ MIBDIRS=/var/lib/mibs/iana:/var/lib/mibs/ietf:/usr/share/snmp/mibs:/var/lib/zabbix/mibs MIBS=+ALL \ ZBX_TYPE=server ZBX_DB_TYPE=mysql ZBX_OPT_TYPE=nginx \ MYSQL_ALLOW_EMPTY_PASSWORD=true ZBX_ADD_SERVER=true ZBX_ADD_WEB=true DB_SERVER_HOST=localhost MYSQL_USER=zabbix ZBX_ADD_JAVA_GATEWAY=true ZBX_JAVAGATEWAY_ENABLE=true ZBX_JAVAGATEWAY=localhost @@ -19,10 +102,25 @@ LABEL org.label-schema.name="zabbix-${ZBX_TYPE}-${ZBX_DB_TYPE}-ubuntu" \ org.label-schema.vcs-ref="${VCS_REF}" \ org.label-schema.build-date="${BUILD_DATE}" \ org.label-schema.schema-version="1.0" \ - org.label-schema.license="GPL 2.0" + org.label-schema.license="GPL 2.0" \ + org.label-schema.usage="https://www.zabbix.com/documentation/${MAJOR_VERSION}/manual/installation/containers" \ + org.label-schema.version="${ZBX_VERSION}" \ + org.label-schema.vcs-url="${ZBX_SOURCES}" \ + org.label-schema.docker.cmd="docker run --name zabbix-appliance -p 80:80 -p 10051:10051 -d zabbix-appliance:ubuntu-${ZBX_VERSION}" STOPSIGNAL SIGTERM +COPY --from=builder /tmp/zabbix-${ZBX_VERSION}/src/zabbix_${ZBX_TYPE}/zabbix_${ZBX_TYPE} /usr/sbin/zabbix_${ZBX_TYPE} +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_${ZBX_TYPE}.conf /etc/zabbix/zabbix_${ZBX_TYPE}.conf +COPY --from=builder /tmp/zabbix-${ZBX_VERSION}/database/${ZBX_DB_TYPE}/create.sql.gz /usr/share/doc/zabbix-${ZBX_TYPE}-${ZBX_DB_TYPE}/create.sql.gz + +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/ + +COPY --from=builder /tmp/zabbix-${ZBX_VERSION}/frontends/php/ /usr/share/zabbix/ + RUN locale-gen $LC_ALL && \ echo "#!/bin/sh\nexit 0" > /usr/sbin/policy-rc.d && \ addgroup --system --quiet zabbix && \ @@ -77,104 +175,6 @@ RUN locale-gen $LC_ALL && \ supervisor \ ttf-dejavu-core \ unixodbc 1>/dev/null && \ - apt-get ${APT_FLAGS_COMMON} purge \ - wget 1>/dev/null && \ - apt-get ${APT_FLAGS_COMMON} autoremove && \ - apt-get ${APT_FLAGS_COMMON} clean && \ - mkdir -p /var/lib/php5 && \ - chown --quiet -R www-data:www-data /var/lib/php5 && \ - rm -rf /var/cache/nginx/* && \ - rm -rf /var/lib/apt/lists/* - -ARG MAJOR_VERSION=master -ARG ZBX_VERSION=${MAJOR_VERSION} -ARG ZBX_SOURCES=svn://svn.zabbix.com/tags/${ZBX_VERSION}/ -ENV ZBX_VERSION=${ZBX_VERSION} ZBX_SOURCES=${ZBX_SOURCES} - -LABEL org.label-schema.usage="https://www.zabbix.com/documentation/${MAJOR_VERSION}/manual/installation/containers" \ - org.label-schema.version="${ZBX_VERSION}" \ - org.label-schema.vcs-url="${ZBX_SOURCES}" \ - org.label-schema.docker.cmd="docker run --name zabbix-appliance -p 80:80 -p 10051:10051 -d zabbix-appliance:ubuntu-${ZBX_VERSION}" - -COPY ["conf/tmp/font-config", "/tmp/font-config"] - -RUN apt-get ${APT_FLAGS_COMMON} update && \ - apt-get ${APT_FLAGS_DEV} install \ - autoconf \ - automake \ - gcc \ - gettext \ - libc6-dev \ - libcurl4-openssl-dev \ - libiksemel-dev \ - libldap2-dev \ - libmysqlclient-dev \ - libopenipmi-dev \ - libsnmp-dev \ - libssh2-1-dev \ - libxml2-dev \ - make \ - openjdk-7-jdk \ - patch \ - pkg-config \ - subversion \ - unixodbc-dev 1>/dev/null && \ - cd /tmp/ && \ - svn --quiet export ${ZBX_SOURCES} zabbix-${ZBX_VERSION} 1>/dev/null && \ - cd /tmp/zabbix-${ZBX_VERSION} && \ - zabbix_revision=`svn info ${ZBX_SOURCES} |grep "Last Changed Rev"|awk '{print $4;}'` && \ - sed -i "s/{ZABBIX_REVISION}/$zabbix_revision/g" include/version.h && \ - 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 1>/dev/null && \ - 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-${ZBX_TYPE} \ - --with-${ZBX_DB_TYPE} \ - --with-jabber \ - --with-ldap \ - --with-libcurl \ - --with-libxml2 \ - --enable-java \ - --with-net-snmp \ - --with-openipmi \ - --with-openssl \ - --with-ssh2 \ - --with-unixodbc \ - --enable-ipv6 \ - --silent && \ - make -j"$(nproc)" -s dbschema 1>/dev/null && \ - make -j"$(nproc)" -s 1>/dev/null && \ - cp src/zabbix_${ZBX_TYPE}/zabbix_${ZBX_TYPE} /usr/sbin/zabbix_${ZBX_TYPE} && \ - cp src/zabbix_get/zabbix_get /usr/bin/zabbix_get && \ - cp src/zabbix_sender/zabbix_sender /usr/bin/zabbix_sender && \ - cp conf/zabbix_${ZBX_TYPE}.conf /etc/zabbix/zabbix_${ZBX_TYPE}.conf && \ - chown --quiet -R zabbix:root /etc/zabbix && \ - cat database/${ZBX_DB_TYPE}/schema.sql > database/${ZBX_DB_TYPE}/create.sql && \ - cat database/${ZBX_DB_TYPE}/images.sql >> database/${ZBX_DB_TYPE}/create.sql && \ - cat database/${ZBX_DB_TYPE}/data.sql >> database/${ZBX_DB_TYPE}/create.sql && \ - gzip database/${ZBX_DB_TYPE}/create.sql && \ - cp database/${ZBX_DB_TYPE}/create.sql.gz /usr/share/doc/zabbix-${ZBX_TYPE}-${ZBX_DB_TYPE}/ && \ - 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/*.xml && \ - cd /tmp/ && \ - rm -rf /tmp/zabbix-${ZBX_VERSION}/ && \ - cd /usr/share/ && \ - svn --quiet export ${ZBX_SOURCES}/frontends/php/ zabbix 1>/dev/null && \ - cd /usr/share/zabbix/ && \ - patch -p3 < /tmp/font-config && \ - rm /tmp/font-config && \ - rm -f conf/zabbix.conf.php && \ - rm -rf tests && \ - rm /usr/share/zabbix/fonts/DejaVuSans.ttf && \ - ./locale/make_mo.sh 2>/dev/null && \ update-alternatives --install /usr/share/zabbix/fonts/graphfont.ttf \ zabbix-frontend-font /usr/share/fonts/truetype/ttf-dejavu/DejaVuSans.ttf 10 && \ mkdir -p /var/lib/locales/supported.d/ && \ @@ -183,32 +183,14 @@ RUN apt-get ${APT_FLAGS_COMMON} update && \ cut -d"'" -f 2 | sort | \ xargs -I '{}' bash -c 'echo "{}.UTF-8 UTF-8" >> /var/lib/locales/supported.d/local' && \ dpkg-reconfigure locales 1>/dev/null && \ - find /usr/share/zabbix/locale -name '*.po' | xargs rm -f && \ - find /usr/share/zabbix/locale -name '*.sh' | xargs rm -f && \ apt-get ${APT_FLAGS_COMMON} purge \ - autoconf \ - automake \ - gcc \ - gettext \ - libc6-dev \ - libcurl4-openssl-dev \ - libiksemel-dev \ - libldap2-dev \ - libmysqlclient-dev \ - libopenipmi-dev \ - libsnmp-dev \ - libssh2-1-dev \ - libxml2-dev \ - make \ - openjdk-7-jdk \ - patch \ - pkg-config \ - subversion \ - unixodbc-dev 1>/dev/null && \ + wget 1>/dev/null && \ apt-get ${APT_FLAGS_COMMON} autoremove && \ apt-get ${APT_FLAGS_COMMON} clean && \ - rm -rf /var/lib/apt/lists/* && \ - rm -rf /root/.subversion + mkdir -p /var/lib/php5 && \ + chown --quiet -R www-data:www-data /var/lib/php5 && \ + rm -rf /var/cache/nginx/* && \ + rm -rf /var/lib/apt/lists/* EXPOSE 80/TCP 443/TCP 10051/TCP From 795218279eb89193b7048dadec6fde3a94ed1b08 Mon Sep 17 00:00:00 2001 From: root Date: Tue, 29 May 2018 07:14:30 -0700 Subject: [PATCH 2/6] Fixed missing ldap on Zabbix agent (ubuntu) image --- agent/ubuntu/Dockerfile | 2 ++ 1 file changed, 2 insertions(+) diff --git a/agent/ubuntu/Dockerfile b/agent/ubuntu/Dockerfile index 83ab76ba1..bd256418a 100644 --- a/agent/ubuntu/Dockerfile +++ b/agent/ubuntu/Dockerfile @@ -84,6 +84,8 @@ RUN locale-gen $LC_ALL && \ mkdir -p /var/lib/zabbix/modules && \ chown --quiet -R zabbix:root /var/lib/zabbix && \ apt-get ${APT_FLAGS_COMMON} update && \ + apt-get ${APT_FLAGS_PERSISTANT} install \ + libldap-2.4 1>/dev/null && \ apt-get ${APT_FLAGS_COMMON} autoremove && \ apt-get ${APT_FLAGS_COMMON} clean && \ rm -rf /var/lib/apt/lists/* From 85a78b6743f3a719055390c4ce65a15936282875 Mon Sep 17 00:00:00 2001 From: root Date: Tue, 29 May 2018 20:48:47 -0700 Subject: [PATCH 3/6] Fixed Apache image on Alpine. Also using PHP7 --- web-apache-mysql/alpine/Dockerfile | 27 +++---- web-apache-mysql/alpine/Dockerfile.orig | 96 +++++++++++++++++++++++++ web-apache-pgsql/alpine/Dockerfile | 27 +++---- 3 files changed, 126 insertions(+), 24 deletions(-) create mode 100644 web-apache-mysql/alpine/Dockerfile.orig diff --git a/web-apache-mysql/alpine/Dockerfile b/web-apache-mysql/alpine/Dockerfile index c639e9bfe..ea6215337 100644 --- a/web-apache-mysql/alpine/Dockerfile +++ b/web-apache-mysql/alpine/Dockerfile @@ -33,21 +33,25 @@ RUN addgroup zabbix && \ apk update && \ apk add ${APK_FLAGS_PERSISTANT} \ apache2 \ - apache2-ssl \ bash \ mariadb-client \ mariadb-client-libs \ - php5-apache2 \ - php5-bcmath \ - php5-ctype \ - php5-gd \ - php5-gettext \ - php5-json \ - php5-ldap \ - php5-mysqli \ - php5-sockets \ - php5-xmlreader \ + php7-apache2 \ + php7-bcmath \ + php7-ctype \ + php7-gd \ + php7-gettext \ + php7-json \ + php7-ldap \ + php7-mbstring \ + php7-mysqli \ + php7-session \ + php7-simplexml \ + php7-sockets \ + php7-xmlreader \ + php7-xmlwriter \ ttf-dejavu && \ + apk add ${APK_FLAGS_PERSISTANT} --no-scripts apache2-ssl && \ rm -rf /var/cache/apk/* ARG MAJOR_VERSION=master @@ -63,7 +67,6 @@ LABEL org.label-schema.usage="https://www.zabbix.com/documentation/${MAJOR_VERSI ADD conf/tmp/font-config /tmp/font-config RUN apk add ${APK_FLAGS_DEV} --virtual build-dependencies \ - coreutils \ gettext \ subversion && \ cd /usr/share/ && \ diff --git a/web-apache-mysql/alpine/Dockerfile.orig b/web-apache-mysql/alpine/Dockerfile.orig new file mode 100644 index 000000000..c639e9bfe --- /dev/null +++ b/web-apache-mysql/alpine/Dockerfile.orig @@ -0,0 +1,96 @@ +FROM alpine:3.7 +LABEL maintainer="Alexey Pustovalov " + +ARG BUILD_DATE +ARG VCS_REF + +ARG APK_FLAGS_COMMON="-q" +ARG APK_FLAGS_PERSISTANT="${APK_FLAGS_COMMON} --clean-protected --no-cache" +ARG APK_FLAGS_DEV="${APK_FLAGS_COMMON} --no-cache" +ENV TERM=xterm \ + ZBX_TYPE=frontend ZBX_DB_TYPE=mysql ZBX_OPT_TYPE=apache + +LABEL org.label-schema.name="zabbix-web-${ZBX_OPT_TYPE}-${ZBX_DB_TYPE}-alpine" \ + org.label-schema.vendor="Zabbix LLC" \ + org.label-schema.url="https://zabbix.com/" \ + org.label-schema.description="Zabbix web-interface based on Apache2 web server with MySQL database support" \ + org.label-schema.vcs-ref="${VCS_REF}" \ + org.label-schema.build-date="${BUILD_DATE}" \ + org.label-schema.schema-version="1.0" \ + org.label-schema.license="GPL 2.0" + +STOPSIGNAL SIGTERM + +RUN addgroup zabbix && \ + adduser -S \ + -D -G zabbix \ + -h /var/lib/zabbix/ \ + -H \ + zabbix && \ + mkdir -p /etc/zabbix && \ + mkdir -p /etc/zabbix/web && \ + chown --quiet -R zabbix:root /etc/zabbix && \ + apk update && \ + apk add ${APK_FLAGS_PERSISTANT} \ + apache2 \ + apache2-ssl \ + bash \ + mariadb-client \ + mariadb-client-libs \ + php5-apache2 \ + php5-bcmath \ + php5-ctype \ + php5-gd \ + php5-gettext \ + php5-json \ + php5-ldap \ + php5-mysqli \ + php5-sockets \ + php5-xmlreader \ + ttf-dejavu && \ + rm -rf /var/cache/apk/* + +ARG MAJOR_VERSION=master +ARG ZBX_VERSION=${MAJOR_VERSION} +ARG ZBX_SOURCES=svn://svn.zabbix.com/tags/${ZBX_VERSION}/ +ENV ZBX_VERSION=${ZBX_VERSION} ZBX_SOURCES=${ZBX_SOURCES} + +LABEL org.label-schema.usage="https://www.zabbix.com/documentation/${MAJOR_VERSION}/manual/installation/containers" \ + org.label-schema.version="${ZBX_VERSION}" \ + org.label-schema.vcs-url="${ZBX_SOURCES}" \ + org.label-schema.docker.cmd="docker run --name zabbix-web-${ZBX_OPT_TYPE}-${ZBX_DB_TYPE} --link mysql-server:mysql --link zabbix-server:zabbix-server -p 80:80 -d zabbix-web-${ZBX_OPT_TYPE}-${ZBX_DB_TYPE}:alpine-${ZBX_VERSION}" + +ADD conf/tmp/font-config /tmp/font-config + +RUN apk add ${APK_FLAGS_DEV} --virtual build-dependencies \ + coreutils \ + gettext \ + subversion && \ + cd /usr/share/ && \ + svn --quiet export ${ZBX_SOURCES}/frontends/php/ zabbix 1>/dev/null && \ + cd /usr/share/zabbix/ && \ + patch -p3 < /tmp/font-config && \ + rm /tmp/font-config && \ + rm -f conf/zabbix.conf.php && \ + rm -rf tests && \ + rm /usr/share/zabbix/fonts/DejaVuSans.ttf && \ + ./locale/make_mo.sh 2>/dev/null && \ + ln -s /usr/share/fonts/ttf-dejavu/DejaVuSans.ttf /usr/share/zabbix/fonts/graphfont.ttf && \ + apk del ${APK_FLAGS_COMMON} --purge \ + build-dependencies && \ + rm -rf /var/cache/apk/* && \ + rm -rf /root/.subversion + +EXPOSE 80/TCP 443/TCP + +WORKDIR /usr/share/zabbix + +VOLUME ["/etc/ssl/apache2"] + +COPY ["conf/etc/zabbix/apache.conf", "/etc/zabbix/"] +COPY ["conf/etc/zabbix/apache_ssl.conf", "/etc/zabbix/"] +COPY ["conf/etc/zabbix/web/zabbix.conf.php", "/etc/zabbix/web/"] +COPY ["conf/etc/php5/conf.d/99-zabbix.ini", "/etc/php5/conf.d/"] +COPY ["docker-entrypoint.sh", "/usr/bin/"] + +ENTRYPOINT ["docker-entrypoint.sh"] diff --git a/web-apache-pgsql/alpine/Dockerfile b/web-apache-pgsql/alpine/Dockerfile index 356f1558a..efce179b9 100644 --- a/web-apache-pgsql/alpine/Dockerfile +++ b/web-apache-pgsql/alpine/Dockerfile @@ -33,20 +33,24 @@ RUN addgroup zabbix && \ apk update && \ apk add ${APK_FLAGS_PERSISTANT} \ apache2 \ - apache2-ssl \ bash \ - php5-apache2 \ - php5-bcmath \ - php5-ctype \ - php5-gd \ - php5-gettext \ - php5-json \ - php5-ldap \ - php5-pgsql \ - php5-sockets \ - php5-xmlreader \ + php7-apache2 \ + php7-bcmath \ + php7-ctype \ + php7-gd \ + php7-gettext \ + php7-json \ + php7-ldap \ + php7-pgsql \ + php7-mbstring \ + php7-session \ + php7-simplexml \ + php7-sockets \ + php7-xmlreader \ + php7-xmlwriter \ postgresql-client \ ttf-dejavu && \ + apk add ${APK_FLAGS_PERSISTANT} --no-scripts apache2-ssl && \ rm -rf /var/cache/apk/* ARG MAJOR_VERSION=master @@ -62,7 +66,6 @@ LABEL org.label-schema.usage="https://www.zabbix.com/documentation/${MAJOR_VERSI COPY ["conf/tmp/font-config", "/tmp/font-config"] RUN apk add ${APK_FLAGS_DEV} --virtual build-dependencies \ - coreutils \ gettext \ subversion && \ cd /usr/share/ && \ From ce16b08f925640c0519d482109bef4090efca863 Mon Sep 17 00:00:00 2001 From: root Date: Tue, 29 May 2018 20:49:05 -0700 Subject: [PATCH 4/6] Fixed Apache image on Alpine. Also using PHP7 --- web-apache-mysql/alpine/Dockerfile.orig | 96 ------------------------- 1 file changed, 96 deletions(-) delete mode 100644 web-apache-mysql/alpine/Dockerfile.orig diff --git a/web-apache-mysql/alpine/Dockerfile.orig b/web-apache-mysql/alpine/Dockerfile.orig deleted file mode 100644 index c639e9bfe..000000000 --- a/web-apache-mysql/alpine/Dockerfile.orig +++ /dev/null @@ -1,96 +0,0 @@ -FROM alpine:3.7 -LABEL maintainer="Alexey Pustovalov " - -ARG BUILD_DATE -ARG VCS_REF - -ARG APK_FLAGS_COMMON="-q" -ARG APK_FLAGS_PERSISTANT="${APK_FLAGS_COMMON} --clean-protected --no-cache" -ARG APK_FLAGS_DEV="${APK_FLAGS_COMMON} --no-cache" -ENV TERM=xterm \ - ZBX_TYPE=frontend ZBX_DB_TYPE=mysql ZBX_OPT_TYPE=apache - -LABEL org.label-schema.name="zabbix-web-${ZBX_OPT_TYPE}-${ZBX_DB_TYPE}-alpine" \ - org.label-schema.vendor="Zabbix LLC" \ - org.label-schema.url="https://zabbix.com/" \ - org.label-schema.description="Zabbix web-interface based on Apache2 web server with MySQL database support" \ - org.label-schema.vcs-ref="${VCS_REF}" \ - org.label-schema.build-date="${BUILD_DATE}" \ - org.label-schema.schema-version="1.0" \ - org.label-schema.license="GPL 2.0" - -STOPSIGNAL SIGTERM - -RUN addgroup zabbix && \ - adduser -S \ - -D -G zabbix \ - -h /var/lib/zabbix/ \ - -H \ - zabbix && \ - mkdir -p /etc/zabbix && \ - mkdir -p /etc/zabbix/web && \ - chown --quiet -R zabbix:root /etc/zabbix && \ - apk update && \ - apk add ${APK_FLAGS_PERSISTANT} \ - apache2 \ - apache2-ssl \ - bash \ - mariadb-client \ - mariadb-client-libs \ - php5-apache2 \ - php5-bcmath \ - php5-ctype \ - php5-gd \ - php5-gettext \ - php5-json \ - php5-ldap \ - php5-mysqli \ - php5-sockets \ - php5-xmlreader \ - ttf-dejavu && \ - rm -rf /var/cache/apk/* - -ARG MAJOR_VERSION=master -ARG ZBX_VERSION=${MAJOR_VERSION} -ARG ZBX_SOURCES=svn://svn.zabbix.com/tags/${ZBX_VERSION}/ -ENV ZBX_VERSION=${ZBX_VERSION} ZBX_SOURCES=${ZBX_SOURCES} - -LABEL org.label-schema.usage="https://www.zabbix.com/documentation/${MAJOR_VERSION}/manual/installation/containers" \ - org.label-schema.version="${ZBX_VERSION}" \ - org.label-schema.vcs-url="${ZBX_SOURCES}" \ - org.label-schema.docker.cmd="docker run --name zabbix-web-${ZBX_OPT_TYPE}-${ZBX_DB_TYPE} --link mysql-server:mysql --link zabbix-server:zabbix-server -p 80:80 -d zabbix-web-${ZBX_OPT_TYPE}-${ZBX_DB_TYPE}:alpine-${ZBX_VERSION}" - -ADD conf/tmp/font-config /tmp/font-config - -RUN apk add ${APK_FLAGS_DEV} --virtual build-dependencies \ - coreutils \ - gettext \ - subversion && \ - cd /usr/share/ && \ - svn --quiet export ${ZBX_SOURCES}/frontends/php/ zabbix 1>/dev/null && \ - cd /usr/share/zabbix/ && \ - patch -p3 < /tmp/font-config && \ - rm /tmp/font-config && \ - rm -f conf/zabbix.conf.php && \ - rm -rf tests && \ - rm /usr/share/zabbix/fonts/DejaVuSans.ttf && \ - ./locale/make_mo.sh 2>/dev/null && \ - ln -s /usr/share/fonts/ttf-dejavu/DejaVuSans.ttf /usr/share/zabbix/fonts/graphfont.ttf && \ - apk del ${APK_FLAGS_COMMON} --purge \ - build-dependencies && \ - rm -rf /var/cache/apk/* && \ - rm -rf /root/.subversion - -EXPOSE 80/TCP 443/TCP - -WORKDIR /usr/share/zabbix - -VOLUME ["/etc/ssl/apache2"] - -COPY ["conf/etc/zabbix/apache.conf", "/etc/zabbix/"] -COPY ["conf/etc/zabbix/apache_ssl.conf", "/etc/zabbix/"] -COPY ["conf/etc/zabbix/web/zabbix.conf.php", "/etc/zabbix/web/"] -COPY ["conf/etc/php5/conf.d/99-zabbix.ini", "/etc/php5/conf.d/"] -COPY ["docker-entrypoint.sh", "/usr/bin/"] - -ENTRYPOINT ["docker-entrypoint.sh"] From 0e102226fe5b4952a299e3134aa43335228cba15 Mon Sep 17 00:00:00 2001 From: root Date: Tue, 29 May 2018 22:07:59 -0700 Subject: [PATCH 5/6] Fixed Apache image on Alpine. Also using PHP7 --- .../alpine/conf/etc/{php5 => php7}/conf.d/99-zabbix.ini | 0 .../alpine/conf/etc/{php5 => php7}/conf.d/99-zabbix.ini | 0 2 files changed, 0 insertions(+), 0 deletions(-) rename web-apache-mysql/alpine/conf/etc/{php5 => php7}/conf.d/99-zabbix.ini (100%) rename web-apache-pgsql/alpine/conf/etc/{php5 => php7}/conf.d/99-zabbix.ini (100%) diff --git a/web-apache-mysql/alpine/conf/etc/php5/conf.d/99-zabbix.ini b/web-apache-mysql/alpine/conf/etc/php7/conf.d/99-zabbix.ini similarity index 100% rename from web-apache-mysql/alpine/conf/etc/php5/conf.d/99-zabbix.ini rename to web-apache-mysql/alpine/conf/etc/php7/conf.d/99-zabbix.ini diff --git a/web-apache-pgsql/alpine/conf/etc/php5/conf.d/99-zabbix.ini b/web-apache-pgsql/alpine/conf/etc/php7/conf.d/99-zabbix.ini similarity index 100% rename from web-apache-pgsql/alpine/conf/etc/php5/conf.d/99-zabbix.ini rename to web-apache-pgsql/alpine/conf/etc/php7/conf.d/99-zabbix.ini From 9aa8e0362b6536cc15ffd3b323b74f8e4f6945fb Mon Sep 17 00:00:00 2001 From: root Date: Tue, 29 May 2018 22:36:35 -0700 Subject: [PATCH 6/6] Fixed Apache image on Alpine. Also using PHP7 --- web-apache-mysql/alpine/Dockerfile | 2 +- web-apache-pgsql/alpine/Dockerfile | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/web-apache-mysql/alpine/Dockerfile b/web-apache-mysql/alpine/Dockerfile index ea6215337..0e3bee390 100644 --- a/web-apache-mysql/alpine/Dockerfile +++ b/web-apache-mysql/alpine/Dockerfile @@ -93,7 +93,7 @@ VOLUME ["/etc/ssl/apache2"] COPY ["conf/etc/zabbix/apache.conf", "/etc/zabbix/"] COPY ["conf/etc/zabbix/apache_ssl.conf", "/etc/zabbix/"] COPY ["conf/etc/zabbix/web/zabbix.conf.php", "/etc/zabbix/web/"] -COPY ["conf/etc/php5/conf.d/99-zabbix.ini", "/etc/php5/conf.d/"] +COPY ["conf/etc/php7/conf.d/99-zabbix.ini", "/etc/php7/conf.d/"] COPY ["docker-entrypoint.sh", "/usr/bin/"] ENTRYPOINT ["docker-entrypoint.sh"] diff --git a/web-apache-pgsql/alpine/Dockerfile b/web-apache-pgsql/alpine/Dockerfile index efce179b9..0826a2aa3 100644 --- a/web-apache-pgsql/alpine/Dockerfile +++ b/web-apache-pgsql/alpine/Dockerfile @@ -92,7 +92,7 @@ VOLUME ["/etc/ssl/apache2"] COPY ["conf/etc/zabbix/apache.conf", "/etc/zabbix/"] COPY ["conf/etc/zabbix/apache_ssl.conf", "/etc/zabbix/"] COPY ["conf/etc/zabbix/web/zabbix.conf.php", "/etc/zabbix/web/"] -COPY ["conf/etc/php5/conf.d/99-zabbix.ini", "/etc/php5/conf.d/"] +COPY ["conf/etc/php7/conf.d/99-zabbix.ini", "/etc/php7/conf.d/"] COPY ["docker-entrypoint.sh", "/usr/bin/"] ENTRYPOINT ["docker-entrypoint.sh"]