From c8cbf57114778dbc97146e6393da2ed41b267f28 Mon Sep 17 00:00:00 2001 From: root Date: Mon, 28 May 2018 13:19:36 -0700 Subject: [PATCH] Using multistage dockerfile for Zabbix agent (alpine) image --- agent/alpine/Dockerfile | 115 ++++++++++++++++++++-------------------- 1 file changed, 58 insertions(+), 57 deletions(-) diff --git a/agent/alpine/Dockerfile b/agent/alpine/Dockerfile index d5c1a639c..f8fb13c56 100644 --- a/agent/alpine/Dockerfile +++ b/agent/alpine/Dockerfile @@ -1,53 +1,13 @@ -FROM alpine:3.4 -LABEL maintainer="Alexey Pustovalov " - -ARG BUILD_DATE -ARG VCS_REF +FROM alpine:3.4 as builder 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=agent ZBX_DB_TYPE=none ZBX_OPT_TYPE=none - -LABEL org.label-schema.name="zabbix-${ZBX_TYPE}-alpine" \ - org.label-schema.vendor="Zabbix LLC" \ - org.label-schema.url="https://zabbix.com/" \ - org.label-schema.description="Zabbix agent is deployed on a monitoring target to actively monitor local resources and applications" \ - 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/ \ - zabbix && \ - mkdir -p /etc/zabbix && \ - mkdir -p /etc/zabbix/zabbix_agentd.d && \ - mkdir -p /var/lib/zabbix && \ - mkdir -p /var/lib/zabbix/enc && \ - mkdir -p /var/lib/zabbix/modules && \ - chown --quiet -R zabbix:root /var/lib/zabbix && \ - apk update && \ - apk add ${APK_FLAGS_PERSISTANT} \ - bash \ - iputils \ - libldap && \ - 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-${ZBX_TYPE} --link zabbix-server:zabbix-server -p 10050:10050 -d zabbix-${ZBX_TYPE}:alpine-${ZBX_VERSION}" +ENV ZBX_VERSION=${ZBX_VERSION} ZBX_SOURCES=${ZBX_SOURCES} \ + TERM=xterm \ + ZBX_TYPE=agent ZBX_DB_TYPE=none ZBX_OPT_TYPE=none RUN apk update && \ apk add ${APK_FLAGS_DEV} --virtual build-dependencies \ @@ -76,19 +36,60 @@ RUN apk update && \ --with-openssl \ --enable-ipv6 \ --silent && \ - make -j"$(nproc)" -s 1>/dev/null && \ - cp src/zabbix_agent/zabbix_agentd /usr/sbin/zabbix_agentd && \ - cp src/zabbix_get/zabbix_get /usr/bin/zabbix_get && \ - cp src/zabbix_sender/zabbix_sender /usr/bin/zabbix_sender && \ - cp conf/zabbix_agentd.conf /etc/zabbix/zabbix_agentd.conf && \ - chown --quiet -R zabbix:root /etc/zabbix && \ - cd /tmp/ && \ - rm -rf /tmp/zabbix-${ZBX_VERSION}/ && \ - apk del ${APK_FLAGS_COMMON} --purge \ - build-dependencies && \ - rm -rf /var/cache/apk/* && \ - rm -rf /root/.subversion && \ - rm -rf /var/svn + make -j"$(nproc)" -s 1>/dev/null + +FROM alpine:3.4 +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 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} \ + TERM=xterm \ + ZBX_TYPE=agent ZBX_DB_TYPE=none ZBX_OPT_TYPE=none + +LABEL org.label-schema.name="zabbix-${ZBX_TYPE}-alpine" \ + org.label-schema.vendor="Zabbix LLC" \ + org.label-schema.url="https://zabbix.com/" \ + org.label-schema.description="Zabbix agent is deployed on a monitoring target to actively monitor local resources and applications" \ + 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.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-${ZBX_TYPE} --link zabbix-server:zabbix-server -p 10050:10050 -d zabbix-${ZBX_TYPE}:alpine-${ZBX_VERSION}" + +STOPSIGNAL SIGTERM + +RUN addgroup zabbix && \ + adduser -S \ + -D -G zabbix \ + -h /var/lib/zabbix/ \ + zabbix && \ + mkdir -p /etc/zabbix && \ + mkdir -p /etc/zabbix/zabbix_agentd.d && \ + mkdir -p /var/lib/zabbix && \ + mkdir -p /var/lib/zabbix/enc && \ + mkdir -p /var/lib/zabbix/modules && \ + chown --quiet -R zabbix:root /var/lib/zabbix && \ + apk update && \ + apk add ${APK_FLAGS_PERSISTANT} \ + bash \ + iputils \ + libldap && \ + rm -rf /var/cache/apk/* + +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 EXPOSE 10050/TCP