Updated structure of Dockerfiles on Alpine

This commit is contained in:
Alexey Pustovalov 2026-03-15 15:02:12 +09:00
parent 4127b68d6d
commit ad9325d57e
17 changed files with 811 additions and 721 deletions

View file

@ -1,4 +1,4 @@
# syntax=docker/dockerfile:1
# syntax=docker/dockerfile:1.6
ARG OS_BASE_IMAGE=alpine:3.23
ARG MAJOR_VERSION=7.4
ARG ZBX_VERSION=${MAJOR_VERSION}.8
@ -13,11 +13,12 @@ ARG ZBX_VERSION
ARG ZBX_SOURCES=https://git.zabbix.com/scm/zbx/zabbix.git
ENV TERM=xterm \
ZBX_VERSION=${ZBX_VERSION} ZBX_SOURCES=${ZBX_SOURCES} \
ZABBIX_USER_HOME_DIR="/var/lib/zabbix" \
ZABBIX_CONF_DIR="/etc/zabbix"
ZBX_VERSION=${ZBX_VERSION} \
ZBX_SOURCES=${ZBX_SOURCES} \
ZABBIX_USER_HOME_DIR=/var/lib/zabbix \
ZABBIX_CONF_DIR=/etc/zabbix
ENV ZBX_LOADMODULEPATH="${ZABBIX_USER_HOME_DIR}/modules" \
ENV ZBX_LOADMODULEPATH=${ZABBIX_USER_HOME_DIR}/modules \
ZBX_USERPARAMETERDIR=${ZABBIX_USER_HOME_DIR}/user_scripts
LABEL org.opencontainers.image.authors="Alexey Pustovalov <alexey.pustovalov@zabbix.com>" \
@ -32,9 +33,10 @@ LABEL org.opencontainers.image.authors="Alexey Pustovalov <alexey.pustovalov@zab
STOPSIGNAL SIGTERM
COPY --from=builder ["/tmp/zabbix-${ZBX_VERSION}-output/agent/sbin/zabbix_agentd", "/usr/sbin/zabbix_agentd"]
COPY --from=builder ["/tmp/zabbix-${ZBX_VERSION}-output/general/bin/*", "/usr/bin/"]
COPY --from=builder ["/tmp/zabbix-${ZBX_VERSION}-output/agent/conf/", "${ZABBIX_CONF_DIR}/"]
COPY --from=builder /tmp/zabbix-${ZBX_VERSION}-output/agent/sbin/zabbix_agentd /usr/sbin/
COPY --from=builder /tmp/zabbix-${ZBX_VERSION}-output/general/bin/zabbix_get /usr/bin/
COPY --from=builder /tmp/zabbix-${ZBX_VERSION}-output/general/bin/zabbix_sender /usr/bin/
COPY --from=builder /tmp/zabbix-${ZBX_VERSION}-output/agent/conf/ ${ZABBIX_CONF_DIR}/
RUN set -eux && \
INSTALL_PKGS="bash \
@ -65,13 +67,13 @@ RUN set -eux && \
--shell /sbin/nologin \
--home ${ZABBIX_USER_HOME_DIR} \
zabbix && \
mkdir -p ${ZABBIX_CONF_DIR} && \
mkdir -p ${ZABBIX_CONF_DIR}/zabbix_agentd.d && \
mkdir -p ${ZABBIX_USER_HOME_DIR} && \
mkdir -p ${ZABBIX_USER_HOME_DIR}/enc && \
mkdir -p ${ZABBIX_USER_HOME_DIR}/enc_internal && \
mkdir -p ${ZABBIX_USER_HOME_DIR}/modules && \
mkdir -p ${ZBX_USERPARAMETERDIR} && \
mkdir -p ${ZABBIX_CONF_DIR} \
${ZABBIX_CONF_DIR}/zabbix_agentd.d \
${ZABBIX_USER_HOME_DIR} \
${ZABBIX_USER_HOME_DIR}/enc \
${ZABBIX_USER_HOME_DIR}/enc_internal \
${ZABBIX_USER_HOME_DIR}/modules \
${ZBX_USERPARAMETERDIR} && \
chown --quiet -R zabbix:root ${ZABBIX_CONF_DIR}/zabbix_agentd_modules.conf \
${ZABBIX_CONF_DIR}/zabbix_agentd_item_keys.conf \
${ZABBIX_CONF_DIR}/zabbix_agentd.d/ \

View file

@ -1,4 +1,4 @@
# syntax=docker/dockerfile:1
# syntax=docker/dockerfile:1.6
ARG OS_BASE_IMAGE=alpine:3.23
ARG MAJOR_VERSION=7.4
ARG ZBX_VERSION=${MAJOR_VERSION}.8
@ -13,11 +13,12 @@ ARG ZBX_VERSION
ARG ZBX_SOURCES=https://git.zabbix.com/scm/zbx/zabbix.git
ENV TERM=xterm \
ZBX_VERSION=${ZBX_VERSION} ZBX_SOURCES=${ZBX_SOURCES} \
ZABBIX_USER_HOME_DIR="/var/lib/zabbix" \
ZABBIX_CONF_DIR="/etc/zabbix"
ZBX_VERSION=${ZBX_VERSION} \
ZBX_SOURCES=${ZBX_SOURCES} \
ZABBIX_USER_HOME_DIR=/var/lib/zabbix \
ZABBIX_CONF_DIR=/etc/zabbix
ENV ZBX_PERSISTENTBUFFERFILE="$ZABBIX_USER_HOME_DIR/buffer/agent2.db" \
ENV ZBX_PERSISTENTBUFFERFILE=$ZABBIX_USER_HOME_DIR/buffer/agent2.db \
ZBX_USERPARAMETERDIR=${ZABBIX_USER_HOME_DIR}/user_scripts
LABEL org.opencontainers.image.authors="Alexey Pustovalov <alexey.pustovalov@zabbix.com>" \
@ -32,9 +33,10 @@ LABEL org.opencontainers.image.authors="Alexey Pustovalov <alexey.pustovalov@zab
STOPSIGNAL SIGTERM
COPY --from=builder ["/tmp/zabbix-${ZBX_VERSION}-output/agent2/sbin/", "/usr/sbin/"]
COPY --from=builder ["/tmp/zabbix-${ZBX_VERSION}-output/general/bin/*", "/usr/bin/"]
COPY --from=builder ["/tmp/zabbix-${ZBX_VERSION}-output/agent2/conf/", "${ZABBIX_CONF_DIR}/"]
COPY --from=builder /tmp/zabbix-${ZBX_VERSION}-output/agent2/sbin/zabbix_agent2 /usr/sbin/
COPY --from=builder /tmp/zabbix-${ZBX_VERSION}-output/general/bin/zabbix_get /usr/bin/
COPY --from=builder /tmp/zabbix-${ZBX_VERSION}-output/general/bin/zabbix_sender /usr/bin/
COPY --from=builder /tmp/zabbix-${ZBX_VERSION}-output/agent2/conf/ ${ZABBIX_CONF_DIR}/
RUN set -eux && \
INSTALL_PKGS="bash \
@ -62,14 +64,14 @@ RUN set -eux && \
--home ${ZABBIX_USER_HOME_DIR}/ \
zabbix && \
echo "zabbix ALL=(root) NOPASSWD: /usr/sbin/smartctl" >> /etc/sudoers.d/zabbix && \
mkdir -p ${ZABBIX_CONF_DIR} && \
mkdir -p ${ZABBIX_CONF_DIR}/zabbix_agentd.d && \
mkdir -p ${ZABBIX_CONF_DIR}/zabbix_agent2.d && \
mkdir -p ${ZABBIX_USER_HOME_DIR} && \
mkdir -p ${ZABBIX_USER_HOME_DIR}/enc && \
mkdir -p ${ZABBIX_USER_HOME_DIR}/enc_internal && \
mkdir -p ${ZABBIX_USER_HOME_DIR}/buffer && \
mkdir -p ${ZBX_USERPARAMETERDIR} && \
mkdir -p ${ZABBIX_CONF_DIR} \
${ZABBIX_CONF_DIR}/zabbix_agentd.d \
${ZABBIX_CONF_DIR}/zabbix_agent2.d \
${ZABBIX_USER_HOME_DIR} \
${ZABBIX_USER_HOME_DIR}/enc \
${ZABBIX_USER_HOME_DIR}/enc_internal \
${ZABBIX_USER_HOME_DIR}/buffer \
${ZBX_USERPARAMETERDIR} && \
chown --quiet -R zabbix:root ${ZABBIX_CONF_DIR}/zabbix_agent2_item_keys.conf \
${ZABBIX_CONF_DIR}/zabbix_agentd.d/ \
${ZABBIX_CONF_DIR}/zabbix_agent2.d/ \

View file

@ -1,4 +1,4 @@
# syntax=docker/dockerfile:1
# syntax=docker/dockerfile:1.6
ARG OS_BASE_IMAGE=alpine:3.23
FROM ${OS_BASE_IMAGE}
@ -7,12 +7,12 @@ ARG ZBX_VERSION=${MAJOR_VERSION}.8
ENV TERM=xterm \
ZBX_VERSION=${ZBX_VERSION} \
PATH=/usr/lib/jvm/default-jvm/bin:$PATH \
JAVA_HOME=/usr/lib/jvm/default-jvm \
GOPATH=/root/go \
GOCACHE=/root/.cache/go-build \
GOMODCACHE=/root/go/pkg/mod \
GOTELEMETRY=off \
GOFLAGS="-buildvcs=false"
GOFLAGS=-buildvcs=false
LABEL org.opencontainers.image.authors="Alexey Pustovalov <alexey.pustovalov@zabbix.com>" \
org.opencontainers.image.description="Zabbix build base image contains all required packages to build Zabbix images" \
@ -24,12 +24,10 @@ LABEL org.opencontainers.image.authors="Alexey Pustovalov <alexey.pustovalov@zab
org.opencontainers.image.version="${ZBX_VERSION}"
RUN set -eux && \
ARCH_SUFFIX="$(cat /etc/apk/arch)"; \
ARCH_SUFFIX="$(apk --print-arch)"; \
case "$ARCH_SUFFIX" in \
riscv64) \
openjdk_packages='openjdk21 openjdk21-jre-headless'; \
;; \
*) openjdk_packages='openjdk17 openjdk17-jre-headless'; \
riscv64) openjdk_packages='openjdk21 openjdk21-jre-headless' ;; \
*) openjdk_packages='openjdk17 openjdk17-jre-headless' ;; \
esac; \
INSTALL_PKGS="bash \
autoconf \

View file

@ -1,4 +1,4 @@
# syntax=docker/dockerfile:1
# syntax=docker/dockerfile:1.6
ARG MAJOR_VERSION=7.4
ARG ZBX_VERSION=${MAJOR_VERSION}.8
ARG BUILD_BASE_IMAGE=zabbix-build-base:alpine-${ZBX_VERSION}
@ -12,6 +12,7 @@ ARG GIT_BRANCH
ARG ZBX_PLUGINS_VERSION=${GIT_BRANCH:-$ZBX_VERSION}
ARG CFLAGS
ARG LDFLAGS
LABEL org.opencontainers.image.authors="Alexey Pustovalov <alexey.pustovalov@zabbix.com>" \
org.opencontainers.image.description="Zabbix build base for MySQL based images" \
@ -25,158 +26,177 @@ LABEL org.opencontainers.image.authors="Alexey Pustovalov <alexey.pustovalov@zab
ENV ZBX_SOURCES_DIR=/tmp/zabbix-${ZBX_VERSION} ZBX_OUTPUT_DIR=/tmp/zabbix-${ZBX_VERSION}-output \
DB_TYPE=mysql \
CFLAGS=${CFLAGS:-"-fPIC -pie -Wl,-z,relro,-z,now,-z,defs -D_FORTIFY_SOURCE=2 -fexceptions -O2 -pipe"} \
CFLAGS=${CFLAGS:-"-O2 -fPIE -fstack-protector-strong -D_FORTIFY_SOURCE=2 -Wformat -Wformat-security -pipe"} \
LDFLAGS=${LDFLAGS:-"-pie -Wl,-z,relro,-z,now,-z,defs -Wl,--as-needed"} \
MONGODB_PLUGIN_SOURCES=https://git.zabbix.com/scm/ap/mongodb.git MONGODB_PLUGIN_VERSION=${ZBX_PLUGINS_VERSION} \
POSTGRESQL_PLUGIN_SOURCES=https://git.zabbix.com/scm/ap/postgresql.git POSTGRESQL_PLUGIN_VERSION=${ZBX_PLUGINS_VERSION} \
MSSQL_PLUGIN_SOURCES=https://git.zabbix.com/scm/ap/mssql.git MSSQL_PLUGIN_VERSION=${ZBX_PLUGINS_VERSION} \
EMBER_PLUS_PLUGIN_SOURCES=https://git.zabbix.com/scm/ap/ember-plus.git EMBER_PLUS_PLUGIN_VERSION=${ZBX_PLUGINS_VERSION} \
NVIDIA_GPU_PLUGIN_SOURCES=https://git.zabbix.com/scm/ap/nvidia-gpu.git NVIDIA_GPU_PLUGIN_VERSION=${ZBX_PLUGINS_VERSION}
RUN --mount=type=cache,target=/root/.cache/go-build/ \
--mount=type=cache,target=/root/go/ \
--mount=from=sources,target=/tmp/src \
--mount=type=bind,source=patches/,target=/tmp/patches \
--mount=from=config_templates,target=/tmp/conf \
RUN --mount=from=sources,target=/tmp/src,ro \
--mount=type=bind,source=patches/,target=/tmp/patches,ro \
set -eux && \
cd /tmp/ && \
mkdir -p ${ZBX_OUTPUT_DIR}/agent/sbin/ && \
mkdir -p ${ZBX_OUTPUT_DIR}/agent/conf/ && \
mkdir -p ${ZBX_OUTPUT_DIR}/agent2/sbin/ && \
mkdir -p ${ZBX_OUTPUT_DIR}/agent2/conf/ && \
mkdir -p ${ZBX_OUTPUT_DIR}/agent2/conf/zabbix_agent2.d/plugins.d/ && \
mkdir -p ${ZBX_OUTPUT_DIR}/proxy/sbin/ && \
mkdir -p ${ZBX_OUTPUT_DIR}/proxy/conf/ && \
mkdir -p ${ZBX_OUTPUT_DIR}/proxy/database/${DB_TYPE}/ && \
mkdir -p ${ZBX_OUTPUT_DIR}/server/sbin/ && \
mkdir -p ${ZBX_OUTPUT_DIR}/server/conf/ && \
mkdir -p ${ZBX_OUTPUT_DIR}/server/database/${DB_TYPE}/ && \
mkdir -p ${ZBX_OUTPUT_DIR}/java_gateway/sbin/ && \
mkdir -p ${ZBX_OUTPUT_DIR}/web_service/sbin/ && \
mkdir -p ${ZBX_OUTPUT_DIR}/web_service/conf/ && \
mkdir -p ${ZBX_OUTPUT_DIR}/general/sbin/ && \
mkdir -p ${ZBX_OUTPUT_DIR}/general/bin/ && \
mkdir -p ${ZBX_OUTPUT_DIR}/general/conf/ && \
if [ -f "/tmp/src/bootstrap.sh" ]; then \
cp -R /tmp/src ${ZBX_SOURCES_DIR}; \
mkdir -p \
${ZBX_OUTPUT_DIR}/agent/sbin \
${ZBX_OUTPUT_DIR}/agent/conf \
${ZBX_OUTPUT_DIR}/agent2/sbin \
${ZBX_OUTPUT_DIR}/agent2/conf \
${ZBX_OUTPUT_DIR}/agent2/conf/zabbix_agent2.d/plugins.d \
${ZBX_OUTPUT_DIR}/proxy/sbin \
${ZBX_OUTPUT_DIR}/proxy/conf \
${ZBX_OUTPUT_DIR}/proxy/database/${DB_TYPE} \
${ZBX_OUTPUT_DIR}/server/sbin \
${ZBX_OUTPUT_DIR}/server/conf \
${ZBX_OUTPUT_DIR}/server/database/${DB_TYPE} \
${ZBX_OUTPUT_DIR}/java_gateway/sbin \
${ZBX_OUTPUT_DIR}/web_service/sbin \
${ZBX_OUTPUT_DIR}/web_service/conf \
${ZBX_OUTPUT_DIR}/general/sbin \
${ZBX_OUTPUT_DIR}/general/bin \
${ZBX_OUTPUT_DIR}/general/conf && \
if [ -f /tmp/src/bootstrap.sh ]; then \
mkdir -p "${ZBX_SOURCES_DIR}" && \
cp -a /tmp/src/. "${ZBX_SOURCES_DIR}/"; \
else \
git -c advice.detachedHead=false clone ${ZBX_SOURCES} --branch ${GIT_BRANCH:-$ZBX_VERSION} --depth 1 --single-branch ${ZBX_SOURCES_DIR}; \
git -c advice.detachedHead=false clone \
"${ZBX_SOURCES}" \
--branch "${GIT_BRANCH:-$ZBX_VERSION}" \
--depth 1 \
--single-branch \
"${ZBX_SOURCES_DIR}"; \
fi && \
cd ${ZBX_SOURCES_DIR} && \
cd "${ZBX_SOURCES_DIR}" && \
for patch_filename in /tmp/patches/*.patch; do \
if [ -f "$patch_filename" ]; then \
patch -p1 < "$patch_filename"; \
fi \
[ -f "$patch_filename" ] || continue; \
patch -p1 < "$patch_filename"; \
done && \
zabbix_revision=`git rev-parse --short HEAD` && \
if git rev-parse --short HEAD >/dev/null 2>&1; then \
zabbix_revision="$(git rev-parse --short HEAD)"; \
else \
zabbix_revision="unknown"; \
fi && \
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 && \
sed -i "s/{ZABBIX_REVISION}/$zabbix_revision/g" src/zabbix_java/src/com/zabbix/gateway/GeneralInformation.java
RUN --mount=type=cache,target=/root/.cache/go-build \
--mount=type=cache,target=/root/go/pkg/mod \
--mount=from=config_templates,target=/tmp/conf,ro \
set -eux && \
cd "${ZBX_SOURCES_DIR}" && \
./bootstrap.sh && \
./configure \
--datadir=/usr/lib \
--libdir=/usr/lib/zabbix \
--prefix=/usr \
--sysconfdir=/etc/zabbix \
--enable-ipv6 \
--enable-agent \
--enable-agent2 \
--enable-java \
--enable-proxy \
--enable-server \
--enable-webservice \
--with-ares \
--with-ldap \
--with-libcurl \
--with-libmodbus \
--with-libpcre2 \
--with-libxml2 \
--with-${DB_TYPE} \
--with-net-snmp \
--with-openipmi \
--with-openssl \
--with-ssh \
--with-unixodbc \
--silent && \
make -j"$(nproc)" -s dbschema && \
make -j"$(nproc)" -s && \
make -j"$(nproc)" -s gettext && \
cat database/${DB_TYPE}/schema.sql > database/${DB_TYPE}/create.sql && \
gzip -c database/${DB_TYPE}/create.sql > ${ZBX_OUTPUT_DIR}/proxy/database/${DB_TYPE}/create.sql.gz && \
cat database/${DB_TYPE}/images.sql >> database/${DB_TYPE}/create.sql && \
cat database/${DB_TYPE}/data.sql >> database/${DB_TYPE}/create.sql && \
gzip -c database/${DB_TYPE}/create.sql > ${ZBX_OUTPUT_DIR}/server/database/${DB_TYPE}/create.sql.gz && \
rm -rf database/${DB_TYPE}/create.sql && \
mkdir /tmp/fonts/ && \
curl --tlsv1.2 -sSf -L "https://raw.githubusercontent.com/notofonts/noto-cjk/main/Sans/OTF/Japanese/NotoSansCJKjp-Regular.otf" -o ${ZBX_SOURCES_DIR}/ui/assets/fonts/NotoSansCJKjp-Regular.otf && \
curl --tlsv1.2 -sSf -L "https://raw.githubusercontent.com/notofonts/noto-cjk/main/Sans/LICENSE" -o ${ZBX_SOURCES_DIR}/ui/assets/fonts/OFL.txt && \
sed -i -r "s/(define\(.*_FONT_NAME.*)DejaVuSans/\1NotoSansCJKjp-Regular/" ${ZBX_SOURCES_DIR}/ui/include/defines.inc.php && \
sed -i -r "s/\.ttf/\.otf/" ${ZBX_SOURCES_DIR}/ui/include/graphs.inc.php && \
rm -f ${ZBX_SOURCES_DIR}/ui/assets/fonts/DejaVuSans.ttf && \
rm -rf /tmp/fonts/ && \
chmod o+r ${ZBX_SOURCES_DIR}/ui/assets/fonts/* && \
strip ${ZBX_SOURCES_DIR}/src/zabbix_agent/zabbix_agentd && \
strip ${ZBX_SOURCES_DIR}/src/zabbix_server/zabbix_server && \
strip ${ZBX_SOURCES_DIR}/src/zabbix_proxy/zabbix_proxy && \
strip ${ZBX_SOURCES_DIR}/src/go/bin/zabbix_agent2 && \
strip ${ZBX_SOURCES_DIR}/src/zabbix_get/zabbix_get && \
strip ${ZBX_SOURCES_DIR}/src/zabbix_sender/zabbix_sender && \
strip ${ZBX_SOURCES_DIR}/src/go/bin/zabbix_web_service && \
cp ${ZBX_SOURCES_DIR}/src/zabbix_agent/zabbix_agentd ${ZBX_OUTPUT_DIR}/agent/sbin/ && \
cp ${ZBX_SOURCES_DIR}/conf/zabbix_agentd.conf ${ZBX_OUTPUT_DIR}/agent/conf/zabbix_agentd.conf_template && \
cp -R ${ZBX_SOURCES_DIR}/conf/zabbix_agentd/ ${ZBX_OUTPUT_DIR}/agent/conf/ && \
cp /tmp/conf/agent/* ${ZBX_OUTPUT_DIR}/agent/conf/ && \
cp ${ZBX_SOURCES_DIR}/src/go/bin/zabbix_agent2 ${ZBX_OUTPUT_DIR}/agent2/sbin/ && \
cp ${ZBX_SOURCES_DIR}/src/go/conf/zabbix_agent2.conf ${ZBX_OUTPUT_DIR}/agent2/conf/zabbix_agent2.conf_template && \
cp /tmp/conf/agent2/* ${ZBX_OUTPUT_DIR}/agent2/conf/ && \
cp -R ${ZBX_SOURCES_DIR}/src/go/conf/zabbix_agent2.d/ ${ZBX_OUTPUT_DIR}/agent2/conf/ && \
cp ${ZBX_SOURCES_DIR}/src/zabbix_server/zabbix_server ${ZBX_OUTPUT_DIR}/server/sbin/ && \
cp ${ZBX_SOURCES_DIR}/conf/zabbix_server.conf ${ZBX_OUTPUT_DIR}/server/conf/zabbix_server.conf_template && \
cp /tmp/conf/server/* ${ZBX_OUTPUT_DIR}/server/conf/ && \
cp ${ZBX_SOURCES_DIR}/src/zabbix_proxy/zabbix_proxy ${ZBX_OUTPUT_DIR}/proxy/sbin/ && \
cp ${ZBX_SOURCES_DIR}/conf/zabbix_proxy.conf ${ZBX_OUTPUT_DIR}/proxy/conf/zabbix_proxy.conf_template && \
cp /tmp/conf/proxy/* ${ZBX_OUTPUT_DIR}/proxy/conf/ && \
cp -R ${ZBX_SOURCES_DIR}/src/zabbix_java/bin/ ${ZBX_OUTPUT_DIR}/java_gateway/sbin/ && \
cp -R ${ZBX_SOURCES_DIR}/src/zabbix_java/lib/ ${ZBX_OUTPUT_DIR}/java_gateway/sbin/ && \
cp ${ZBX_SOURCES_DIR}/src/go/bin/zabbix_web_service ${ZBX_OUTPUT_DIR}/web_service/sbin/ && \
cp ${ZBX_SOURCES_DIR}/src/go/conf/zabbix_web_service.conf ${ZBX_OUTPUT_DIR}/web_service/conf/zabbix_web_service.conf_template && \
cp /tmp/conf/web_service/* ${ZBX_OUTPUT_DIR}/web_service/conf/ && \
cp ${ZBX_SOURCES_DIR}/src/zabbix_get/zabbix_get ${ZBX_OUTPUT_DIR}/general/bin/ && \
cp ${ZBX_SOURCES_DIR}/src/zabbix_sender/zabbix_sender ${ZBX_OUTPUT_DIR}/general/bin/ && \
make -s distclean && \
cd /tmp/ && \
mkdir -p ${ZBX_OUTPUT_DIR}/agent2/sbin/zabbix-agent2-plugin/ && \
mkdir -p ${ZBX_OUTPUT_DIR}/agent2/conf/zabbix_agent2.d/plugins.d/ && \
git -c advice.detachedHead=false clone ${MONGODB_PLUGIN_SOURCES} --branch ${MONGODB_PLUGIN_VERSION} --depth 1 --single-branch /tmp/mongodb-plugin-${MONGODB_PLUGIN_VERSION} && \
cd /tmp/mongodb-plugin-${MONGODB_PLUGIN_VERSION} && \
make && \
strip /tmp/mongodb-plugin-${MONGODB_PLUGIN_VERSION}/zabbix-agent2-plugin-mongodb && \
cp /tmp/mongodb-plugin-${MONGODB_PLUGIN_VERSION}/zabbix-agent2-plugin-mongodb ${ZBX_OUTPUT_DIR}/agent2/sbin/zabbix-agent2-plugin/mongodb && \
cp /tmp/mongodb-plugin-${MONGODB_PLUGIN_VERSION}/mongodb.conf ${ZBX_OUTPUT_DIR}/agent2/conf/zabbix_agent2.d/plugins.d/ && \
cd /tmp/ && \
git -c advice.detachedHead=false clone ${POSTGRESQL_PLUGIN_SOURCES} --branch ${POSTGRESQL_PLUGIN_VERSION} --depth 1 --single-branch /tmp/postgresql-plugin-${POSTGRESQL_PLUGIN_VERSION} && \
cd /tmp/postgresql-plugin-${POSTGRESQL_PLUGIN_VERSION} && \
make && \
strip /tmp/postgresql-plugin-${POSTGRESQL_PLUGIN_VERSION}/zabbix-agent2-plugin-postgresql && \
cp /tmp/postgresql-plugin-${POSTGRESQL_PLUGIN_VERSION}/zabbix-agent2-plugin-postgresql ${ZBX_OUTPUT_DIR}/agent2/sbin/zabbix-agent2-plugin/postgresql && \
cp /tmp/postgresql-plugin-${POSTGRESQL_PLUGIN_VERSION}/postgresql.conf ${ZBX_OUTPUT_DIR}/agent2/conf/zabbix_agent2.d/plugins.d/ && \
cd /tmp/ && \
git -c advice.detachedHead=false clone ${MSSQL_PLUGIN_SOURCES} --branch ${MSSQL_PLUGIN_VERSION} --depth 1 --single-branch /tmp/mssql-plugin-${MSSQL_PLUGIN_VERSION} && \
cd /tmp/mssql-plugin-${MSSQL_PLUGIN_VERSION} && \
make && \
strip /tmp/mssql-plugin-${MSSQL_PLUGIN_VERSION}/zabbix-agent2-plugin-mssql && \
cp /tmp/mssql-plugin-${MSSQL_PLUGIN_VERSION}/zabbix-agent2-plugin-mssql ${ZBX_OUTPUT_DIR}/agent2/sbin/zabbix-agent2-plugin/mssql && \
cp /tmp/mssql-plugin-${MSSQL_PLUGIN_VERSION}/mssql.conf ${ZBX_OUTPUT_DIR}/agent2/conf/zabbix_agent2.d/plugins.d/ && \
cd /tmp/ && \
git -c advice.detachedHead=false clone ${EMBER_PLUS_PLUGIN_SOURCES} --branch ${EMBER_PLUS_PLUGIN_VERSION} --depth 1 --single-branch /tmp/ember-plugin-${EMBER_PLUS_PLUGIN_VERSION} && \
cd /tmp/ember-plugin-${EMBER_PLUS_PLUGIN_VERSION} && \
make && \
strip /tmp/ember-plugin-${EMBER_PLUS_PLUGIN_VERSION}/zabbix-agent2-plugin-ember-plus && \
cp /tmp/ember-plugin-${EMBER_PLUS_PLUGIN_VERSION}/zabbix-agent2-plugin-ember-plus ${ZBX_OUTPUT_DIR}/agent2/sbin/zabbix-agent2-plugin/ember-plus && \
cp /tmp/ember-plugin-${EMBER_PLUS_PLUGIN_VERSION}/ember.conf ${ZBX_OUTPUT_DIR}/agent2/conf/zabbix_agent2.d/plugins.d/ && \
cd /tmp/ && \
git -c advice.detachedHead=false clone ${NVIDIA_GPU_PLUGIN_SOURCES} --branch ${NVIDIA_GPU_PLUGIN_VERSION} --depth 1 --single-branch /tmp/nvidia-gpu-plugin-${NVIDIA_GPU_PLUGIN_VERSION} && \
cd /tmp/nvidia-gpu-plugin-${NVIDIA_GPU_PLUGIN_VERSION} && \
make && \
strip /tmp/nvidia-gpu-plugin-${NVIDIA_GPU_PLUGIN_VERSION}/zabbix-agent2-plugin-nvidia-gpu && \
cp /tmp/nvidia-gpu-plugin-${NVIDIA_GPU_PLUGIN_VERSION}/zabbix-agent2-plugin-nvidia-gpu ${ZBX_OUTPUT_DIR}/agent2/sbin/zabbix-agent2-plugin/nvidia-gpu && \
cp /tmp/nvidia-gpu-plugin-${NVIDIA_GPU_PLUGIN_VERSION}/nvidia.conf ${ZBX_OUTPUT_DIR}/agent2/conf/zabbix_agent2.d/plugins.d/
--datadir=/usr/lib \
--libdir=/usr/lib/zabbix \
--prefix=/usr \
--sysconfdir=/etc/zabbix \
--enable-ipv6 \
--enable-agent \
--enable-agent2 \
--enable-java \
--enable-proxy \
--enable-server \
--enable-webservice \
--with-ares \
--with-ldap \
--with-libcurl \
--with-libmodbus \
--with-libpcre2 \
--with-libxml2 \
--with-${DB_TYPE} \
--with-net-snmp \
--with-openipmi \
--with-openssl \
--with-ssh \
--with-unixodbc \
--silent && \
jobs="$(nproc)" && \
make -j"${jobs}" -s dbschema && \
make -j"${jobs}" -s && \
make -j"${jobs}" -s gettext && \
cat "database/${DB_TYPE}/schema.sql" > "database/${DB_TYPE}/create.sql" && \
gzip -c "database/${DB_TYPE}/create.sql" > "${ZBX_OUTPUT_DIR}/proxy/database/${DB_TYPE}/create.sql.gz" && \
cat "database/${DB_TYPE}/images.sql" >> "database/${DB_TYPE}/create.sql" && \
cat "database/${DB_TYPE}/data.sql" >> "database/${DB_TYPE}/create.sql" && \
gzip -c "database/${DB_TYPE}/create.sql" > "${ZBX_OUTPUT_DIR}/server/database/${DB_TYPE}/create.sql.gz" && \
rm -f "database/${DB_TYPE}/create.sql" && \
strip src/zabbix_agent/zabbix_agentd && \
strip src/zabbix_server/zabbix_server && \
strip src/zabbix_proxy/zabbix_proxy && \
strip src/zabbix_get/zabbix_get && \
strip src/zabbix_sender/zabbix_sender && \
strip src/go/bin/zabbix_agent2 || true && \
strip src/go/bin/zabbix_web_service || true && \
cp src/zabbix_agent/zabbix_agentd "${ZBX_OUTPUT_DIR}/agent/sbin/" && \
cp conf/zabbix_agentd.conf "${ZBX_OUTPUT_DIR}/agent/conf/zabbix_agentd.conf.dist" && \
cp -a conf/zabbix_agentd/. "${ZBX_OUTPUT_DIR}/agent/conf/" && \
cp -a /tmp/conf/agent/. "${ZBX_OUTPUT_DIR}/agent/conf/" && \
cp src/go/bin/zabbix_agent2 "${ZBX_OUTPUT_DIR}/agent2/sbin/" && \
cp src/go/conf/zabbix_agent2.conf "${ZBX_OUTPUT_DIR}/agent2/conf/zabbix_agent2.conf.dist" && \
cp -a src/go/conf/zabbix_agent2.d/. "${ZBX_OUTPUT_DIR}/agent2/conf/zabbix_agent2.d/" && \
cp -a /tmp/conf/agent2/. "${ZBX_OUTPUT_DIR}/agent2/conf/" && \
cp src/zabbix_server/zabbix_server "${ZBX_OUTPUT_DIR}/server/sbin/" && \
cp conf/zabbix_server.conf "${ZBX_OUTPUT_DIR}/server/conf/zabbix_server.conf.dist" && \
cp -a /tmp/conf/server/. "${ZBX_OUTPUT_DIR}/server/conf/" && \
cp src/zabbix_proxy/zabbix_proxy "${ZBX_OUTPUT_DIR}/proxy/sbin/" && \
cp conf/zabbix_proxy.conf "${ZBX_OUTPUT_DIR}/proxy/conf/zabbix_proxy.conf.dist" && \
cp -a /tmp/conf/proxy/. "${ZBX_OUTPUT_DIR}/proxy/conf/" && \
cp -a src/zabbix_java/bin/. "${ZBX_OUTPUT_DIR}/java_gateway/sbin/bin/" && \
cp -a src/zabbix_java/lib/. "${ZBX_OUTPUT_DIR}/java_gateway/sbin/lib/" && \
cp src/go/bin/zabbix_web_service "${ZBX_OUTPUT_DIR}/web_service/sbin/" && \
cp src/go/conf/zabbix_web_service.conf "${ZBX_OUTPUT_DIR}/web_service/conf/zabbix_web_service.conf.dist" && \
cp -a /tmp/conf/web_service/. "${ZBX_OUTPUT_DIR}/web_service/conf/" && \
cp src/zabbix_get/zabbix_get "${ZBX_OUTPUT_DIR}/general/bin/" && \
cp src/zabbix_sender/zabbix_sender "${ZBX_OUTPUT_DIR}/general/bin/" && \
make -s distclean
RUN set -eux && \
cd "${ZBX_SOURCES_DIR}" && \
curl --retry 5 --retry-all-errors --retry-delay 2 --tlsv1.2 -sSf -L \
"https://raw.githubusercontent.com/notofonts/noto-cjk/main/Sans/OTF/Japanese/NotoSansCJKjp-Regular.otf" \
-o ui/assets/fonts/NotoSansCJKjp-Regular.otf && \
curl --retry 5 --retry-all-errors --retry-delay 2 --tlsv1.2 -sSf -L \
"https://raw.githubusercontent.com/notofonts/noto-cjk/main/Sans/LICENSE" \
-o ui/assets/fonts/OFL.txt && \
sed -i -r 's/(define\(.*_FONT_NAME.*)DejaVuSans/\1NotoSansCJKjp-Regular/' ui/include/defines.inc.php && \
sed -i -r 's/\.ttf/\.otf/' ui/include/graphs.inc.php && \
rm -f ui/assets/fonts/DejaVuSans.ttf && \
chmod o+r ui/assets/fonts/*
RUN --mount=type=cache,target=/root/.cache/go-build \
--mount=type=cache,target=/root/go/pkg/mod \
set -eux && \
mkdir -p "${ZBX_OUTPUT_DIR}/agent2/sbin/zabbix-agent2-plugin" && \
mkdir -p "${ZBX_OUTPUT_DIR}/agent2/conf/zabbix_agent2.d/plugins.d" && \
build_plugin() { \
name="$1"; \
repo="$2"; \
version="$3"; \
binary="$4"; \
conf="$5"; \
outname="$6"; \
workdir="/tmp/${name}-plugin-${version}"; \
rm -rf "$workdir"; \
git -c advice.detachedHead=false clone "$repo" \
--branch "$version" \
--depth 1 \
--single-branch \
"$workdir"; \
cd "$workdir"; \
make; \
strip "$binary" || true; \
cp "$binary" "${ZBX_OUTPUT_DIR}/agent2/sbin/zabbix-agent2-plugin/${outname}"; \
cp "$conf" "${ZBX_OUTPUT_DIR}/agent2/conf/zabbix_agent2.d/plugins.d/"; \
make clean; \
}; \
build_plugin mongodb "${MONGODB_PLUGIN_SOURCES}" "${MONGODB_PLUGIN_VERSION}" \
zabbix-agent2-plugin-mongodb mongodb.conf mongodb && \
build_plugin postgresql "${POSTGRESQL_PLUGIN_SOURCES}" "${POSTGRESQL_PLUGIN_VERSION}" \
zabbix-agent2-plugin-postgresql postgresql.conf postgresql && \
build_plugin mssql "${MSSQL_PLUGIN_SOURCES}" "${MSSQL_PLUGIN_VERSION}" \
zabbix-agent2-plugin-mssql mssql.conf mssql && \
build_plugin ember "${EMBER_PLUS_PLUGIN_SOURCES}" "${EMBER_PLUS_PLUGIN_VERSION}" \
zabbix-agent2-plugin-ember-plus ember.conf ember-plus && \
build_plugin nvidia-gpu "${NVIDIA_GPU_PLUGIN_SOURCES}" "${NVIDIA_GPU_PLUGIN_VERSION}" \
zabbix-agent2-plugin-nvidia-gpu nvidia.conf nvidia-gpu

View file

@ -1,4 +1,4 @@
# syntax=docker/dockerfile:1
# syntax=docker/dockerfile:1.6
ARG MAJOR_VERSION=7.4
ARG ZBX_VERSION=${MAJOR_VERSION}.8
ARG BUILD_BASE_IMAGE=zabbix-build-base:alpine-${ZBX_VERSION}
@ -12,6 +12,7 @@ ARG GIT_BRANCH
ARG ZBX_PLUGINS_VERSION=${GIT_BRANCH:-$ZBX_VERSION}
ARG CFLAGS
ARG LDFLAGS
LABEL org.opencontainers.image.authors="Alexey Pustovalov <alexey.pustovalov@zabbix.com>" \
org.opencontainers.image.description="Zabbix build base for PostgreSQL based images" \
@ -25,163 +26,177 @@ LABEL org.opencontainers.image.authors="Alexey Pustovalov <alexey.pustovalov@zab
ENV ZBX_SOURCES_DIR=/tmp/zabbix-${ZBX_VERSION} ZBX_OUTPUT_DIR=/tmp/zabbix-${ZBX_VERSION}-output \
DB_TYPE=postgresql \
CFLAGS=${CFLAGS:-"-fPIC -pie -Wl,-z,relro,-z,now,-z,defs -D_FORTIFY_SOURCE=2 -fexceptions -O2 -pipe"} \
CFLAGS=${CFLAGS:-"-O2 -fPIE -fstack-protector-strong -D_FORTIFY_SOURCE=2 -Wformat -Wformat-security -pipe"} \
LDFLAGS=${LDFLAGS:-"-pie -Wl,-z,relro,-z,now,-z,defs -Wl,--as-needed"} \
MONGODB_PLUGIN_SOURCES=https://git.zabbix.com/scm/ap/mongodb.git MONGODB_PLUGIN_VERSION=${ZBX_PLUGINS_VERSION} \
POSTGRESQL_PLUGIN_SOURCES=https://git.zabbix.com/scm/ap/postgresql.git POSTGRESQL_PLUGIN_VERSION=${ZBX_PLUGINS_VERSION} \
MSSQL_PLUGIN_SOURCES=https://git.zabbix.com/scm/ap/mssql.git MSSQL_PLUGIN_VERSION=${ZBX_PLUGINS_VERSION} \
EMBER_PLUS_PLUGIN_SOURCES=https://git.zabbix.com/scm/ap/ember-plus.git EMBER_PLUS_PLUGIN_VERSION=${ZBX_PLUGINS_VERSION} \
NVIDIA_GPU_PLUGIN_SOURCES=https://git.zabbix.com/scm/ap/nvidia-gpu.git NVIDIA_GPU_PLUGIN_VERSION=${ZBX_PLUGINS_VERSION}
RUN --mount=type=cache,target=/root/.cache/go-build/ \
--mount=type=cache,target=/root/go/ \
--mount=from=sources,target=/tmp/src \
--mount=type=bind,source=patches/,target=/tmp/patches \
--mount=from=config_templates,target=/tmp/conf \
RUN --mount=from=sources,target=/tmp/src,ro \
--mount=type=bind,source=patches/,target=/tmp/patches,ro \
set -eux && \
cd /tmp/ && \
mkdir -p ${ZBX_OUTPUT_DIR}/agent/sbin/ && \
mkdir -p ${ZBX_OUTPUT_DIR}/agent/conf/ && \
mkdir -p ${ZBX_OUTPUT_DIR}/agent2/sbin/ && \
mkdir -p ${ZBX_OUTPUT_DIR}/agent2/conf/ && \
mkdir -p ${ZBX_OUTPUT_DIR}/agent2/conf/zabbix_agent2.d/plugins.d/ && \
mkdir -p ${ZBX_OUTPUT_DIR}/proxy/sbin/ && \
mkdir -p ${ZBX_OUTPUT_DIR}/proxy/conf/ && \
mkdir -p ${ZBX_OUTPUT_DIR}/proxy/database/${DB_TYPE}/ && \
mkdir -p ${ZBX_OUTPUT_DIR}/server/database/${DB_TYPE}/option-patches/with-compression/ && \
mkdir -p ${ZBX_OUTPUT_DIR}/server/database/${DB_TYPE}/option-patches/without-compression/ && \
mkdir -p ${ZBX_OUTPUT_DIR}/server/sbin/ && \
mkdir -p ${ZBX_OUTPUT_DIR}/server/conf/ && \
mkdir -p ${ZBX_OUTPUT_DIR}/server/database/${DB_TYPE}/ && \
mkdir -p ${ZBX_OUTPUT_DIR}/java_gateway/sbin/ && \
mkdir -p ${ZBX_OUTPUT_DIR}/web_service/sbin/ && \
mkdir -p ${ZBX_OUTPUT_DIR}/web_service/conf/ && \
mkdir -p ${ZBX_OUTPUT_DIR}/general/sbin/ && \
mkdir -p ${ZBX_OUTPUT_DIR}/general/bin/ && \
mkdir -p ${ZBX_OUTPUT_DIR}/general/conf/ && \
if [ -f "/tmp/src/bootstrap.sh" ]; then \
cp -R /tmp/src ${ZBX_SOURCES_DIR}; \
mkdir -p \
${ZBX_OUTPUT_DIR}/agent/sbin \
${ZBX_OUTPUT_DIR}/agent/conf \
${ZBX_OUTPUT_DIR}/agent2/sbin \
${ZBX_OUTPUT_DIR}/agent2/conf \
${ZBX_OUTPUT_DIR}/agent2/conf/zabbix_agent2.d/plugins.d \
${ZBX_OUTPUT_DIR}/proxy/sbin \
${ZBX_OUTPUT_DIR}/proxy/conf \
${ZBX_OUTPUT_DIR}/proxy/database/${DB_TYPE} \
${ZBX_OUTPUT_DIR}/server/sbin \
${ZBX_OUTPUT_DIR}/server/conf \
${ZBX_OUTPUT_DIR}/server/database/${DB_TYPE} \
${ZBX_OUTPUT_DIR}/java_gateway/sbin \
${ZBX_OUTPUT_DIR}/web_service/sbin \
${ZBX_OUTPUT_DIR}/web_service/conf \
${ZBX_OUTPUT_DIR}/general/sbin \
${ZBX_OUTPUT_DIR}/general/bin \
${ZBX_OUTPUT_DIR}/general/conf && \
if [ -f /tmp/src/bootstrap.sh ]; then \
mkdir -p "${ZBX_SOURCES_DIR}" && \
cp -a /tmp/src/. "${ZBX_SOURCES_DIR}/"; \
else \
git -c advice.detachedHead=false clone ${ZBX_SOURCES} --branch ${GIT_BRANCH:-$ZBX_VERSION} --depth 1 --single-branch ${ZBX_SOURCES_DIR}; \
git -c advice.detachedHead=false clone \
"${ZBX_SOURCES}" \
--branch "${GIT_BRANCH:-$ZBX_VERSION}" \
--depth 1 \
--single-branch \
"${ZBX_SOURCES_DIR}"; \
fi && \
cd ${ZBX_SOURCES_DIR} && \
cd "${ZBX_SOURCES_DIR}" && \
for patch_filename in /tmp/patches/*.patch; do \
if [ -f "$patch_filename" ]; then \
patch -p1 < "$patch_filename"; \
fi \
[ -f "$patch_filename" ] || continue; \
patch -p1 < "$patch_filename"; \
done && \
zabbix_revision=`git rev-parse --short HEAD` && \
if git rev-parse --short HEAD >/dev/null 2>&1; then \
zabbix_revision="$(git rev-parse --short HEAD)"; \
else \
zabbix_revision="unknown"; \
fi && \
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 && \
sed -i "s/{ZABBIX_REVISION}/$zabbix_revision/g" src/zabbix_java/src/com/zabbix/gateway/GeneralInformation.java
RUN --mount=type=cache,target=/root/.cache/go-build \
--mount=type=cache,target=/root/go/pkg/mod \
--mount=from=config_templates,target=/tmp/conf,ro \
set -eux && \
cd "${ZBX_SOURCES_DIR}" && \
./bootstrap.sh && \
./configure \
--datadir=/usr/lib \
--libdir=/usr/lib/zabbix \
--prefix=/usr \
--sysconfdir=/etc/zabbix \
--enable-ipv6 \
--enable-agent \
--enable-agent2 \
--enable-java \
--enable-proxy \
--enable-server \
--enable-webservice \
--with-ares \
--with-ldap \
--with-libcurl \
--with-libmodbus \
--with-libpcre2 \
--with-libxml2 \
--with-${DB_TYPE} \
--with-net-snmp \
--with-openipmi \
--with-openssl \
--with-ssh \
--with-unixodbc \
--silent && \
make -j"$(nproc)" -s dbschema && \
make -j"$(nproc)" -s && \
make -j"$(nproc)" -s gettext && \
cat database/${DB_TYPE}/schema.sql > database/${DB_TYPE}/create.sql && \
gzip -c database/${DB_TYPE}/create.sql > ${ZBX_OUTPUT_DIR}/proxy/database/${DB_TYPE}/create.sql.gz && \
cat database/${DB_TYPE}/images.sql >> database/${DB_TYPE}/create.sql && \
cat database/${DB_TYPE}/data.sql >> database/${DB_TYPE}/create.sql && \
gzip -c database/${DB_TYPE}/create.sql > ${ZBX_OUTPUT_DIR}/server/database/${DB_TYPE}/create.sql.gz && \
rm -rf database/${DB_TYPE}/create.sql && \
cp -R ${ZBX_SOURCES_DIR}/database/postgresql/timescaledb/schema.sql ${ZBX_OUTPUT_DIR}/server/database/${DB_TYPE}/timescaledb.sql && \
cp -R ${ZBX_SOURCES_DIR}/database/postgresql/timescaledb/option-patches/with-compression/*.sql ${ZBX_OUTPUT_DIR}/server/database/${DB_TYPE}/option-patches/with-compression/ && \
cp -R ${ZBX_SOURCES_DIR}/database/postgresql/timescaledb/option-patches/without-compression/*.sql ${ZBX_OUTPUT_DIR}/server/database/${DB_TYPE}/option-patches/without-compression/ && \
mkdir /tmp/fonts/ && \
curl --tlsv1.2 -sSf -L "https://raw.githubusercontent.com/notofonts/noto-cjk/main/Sans/OTF/Japanese/NotoSansCJKjp-Regular.otf" -o ${ZBX_SOURCES_DIR}/ui/assets/fonts/NotoSansCJKjp-Regular.otf && \
curl --tlsv1.2 -sSf -L "https://raw.githubusercontent.com/notofonts/noto-cjk/main/Sans/LICENSE" -o ${ZBX_SOURCES_DIR}/ui/assets/fonts/OFL.txt && \
sed -i -r "s/(define\(.*_FONT_NAME.*)DejaVuSans/\1NotoSansCJKjp-Regular/" ${ZBX_SOURCES_DIR}/ui/include/defines.inc.php && \
sed -i -r "s/\.ttf/\.otf/" ${ZBX_SOURCES_DIR}/ui/include/graphs.inc.php && \
rm -f ${ZBX_SOURCES_DIR}/ui/assets/fonts/DejaVuSans.ttf && \
rm -rf /tmp/fonts/ && \
chmod o+r ${ZBX_SOURCES_DIR}/ui/assets/fonts/* && \
strip ${ZBX_SOURCES_DIR}/src/zabbix_agent/zabbix_agentd && \
strip ${ZBX_SOURCES_DIR}/src/zabbix_server/zabbix_server && \
strip ${ZBX_SOURCES_DIR}/src/zabbix_proxy/zabbix_proxy && \
strip ${ZBX_SOURCES_DIR}/src/go/bin/zabbix_agent2 && \
strip ${ZBX_SOURCES_DIR}/src/zabbix_get/zabbix_get && \
strip ${ZBX_SOURCES_DIR}/src/zabbix_sender/zabbix_sender && \
strip ${ZBX_SOURCES_DIR}/src/go/bin/zabbix_web_service && \
cp ${ZBX_SOURCES_DIR}/src/zabbix_agent/zabbix_agentd ${ZBX_OUTPUT_DIR}/agent/sbin/ && \
cp ${ZBX_SOURCES_DIR}/conf/zabbix_agentd.conf ${ZBX_OUTPUT_DIR}/agent/conf/zabbix_agentd.conf_template && \
cp /tmp/conf/agent/* ${ZBX_OUTPUT_DIR}/agent/conf/ && \
cp -R ${ZBX_SOURCES_DIR}/conf/zabbix_agentd/ ${ZBX_OUTPUT_DIR}/agent/conf/ && \
cp ${ZBX_SOURCES_DIR}/src/go/bin/zabbix_agent2 ${ZBX_OUTPUT_DIR}/agent2/sbin/ && \
cp ${ZBX_SOURCES_DIR}/src/go/conf/zabbix_agent2.conf ${ZBX_OUTPUT_DIR}/agent2/conf/zabbix_agent2.conf_template && \
cp /tmp/conf/agent2/* ${ZBX_OUTPUT_DIR}/agent2/conf/ && \
cp -R ${ZBX_SOURCES_DIR}/src/go/conf/zabbix_agent2.d/ ${ZBX_OUTPUT_DIR}/agent2/conf/ && \
cp ${ZBX_SOURCES_DIR}/src/zabbix_server/zabbix_server ${ZBX_OUTPUT_DIR}/server/sbin/ && \
cp ${ZBX_SOURCES_DIR}/conf/zabbix_server.conf ${ZBX_OUTPUT_DIR}/server/conf/zabbix_server.conf_template && \
cp /tmp/conf/server/* ${ZBX_OUTPUT_DIR}/server/conf/ && \
cp ${ZBX_SOURCES_DIR}/src/zabbix_proxy/zabbix_proxy ${ZBX_OUTPUT_DIR}/proxy/sbin/ && \
cp ${ZBX_SOURCES_DIR}/conf/zabbix_proxy.conf ${ZBX_OUTPUT_DIR}/proxy/conf/zabbix_proxy.conf_template && \
cp /tmp/conf/proxy/* ${ZBX_OUTPUT_DIR}/proxy/conf/ && \
cp -R ${ZBX_SOURCES_DIR}/src/zabbix_java/bin/ ${ZBX_OUTPUT_DIR}/java_gateway/sbin/ && \
cp -R ${ZBX_SOURCES_DIR}/src/zabbix_java/lib/ ${ZBX_OUTPUT_DIR}/java_gateway/sbin/ && \
cp ${ZBX_SOURCES_DIR}/src/go/bin/zabbix_web_service ${ZBX_OUTPUT_DIR}/web_service/sbin/ && \
cp ${ZBX_SOURCES_DIR}/src/go/conf/zabbix_web_service.conf ${ZBX_OUTPUT_DIR}/web_service/conf/zabbix_web_service.conf_template && \
cp /tmp/conf/web_service/* ${ZBX_OUTPUT_DIR}/web_service/conf/ && \
cp ${ZBX_SOURCES_DIR}/src/zabbix_get/zabbix_get ${ZBX_OUTPUT_DIR}/general/bin/ && \
cp ${ZBX_SOURCES_DIR}/src/zabbix_sender/zabbix_sender ${ZBX_OUTPUT_DIR}/general/bin/ && \
make -s distclean && \
cd /tmp/ && \
mkdir -p ${ZBX_OUTPUT_DIR}/agent2/sbin/zabbix-agent2-plugin/ && \
mkdir -p ${ZBX_OUTPUT_DIR}/agent2/conf/zabbix_agent2.d/plugins.d/ && \
git -c advice.detachedHead=false clone ${MONGODB_PLUGIN_SOURCES} --branch ${MONGODB_PLUGIN_VERSION} --depth 1 --single-branch /tmp/mongodb-plugin-${MONGODB_PLUGIN_VERSION} && \
cd /tmp/mongodb-plugin-${MONGODB_PLUGIN_VERSION} && \
make && \
strip /tmp/mongodb-plugin-${MONGODB_PLUGIN_VERSION}/zabbix-agent2-plugin-mongodb && \
cp /tmp/mongodb-plugin-${MONGODB_PLUGIN_VERSION}/zabbix-agent2-plugin-mongodb ${ZBX_OUTPUT_DIR}/agent2/sbin/zabbix-agent2-plugin/mongodb && \
cp /tmp/mongodb-plugin-${MONGODB_PLUGIN_VERSION}/mongodb.conf ${ZBX_OUTPUT_DIR}/agent2/conf/zabbix_agent2.d/plugins.d/ && \
cd /tmp/ && \
git -c advice.detachedHead=false clone ${POSTGRESQL_PLUGIN_SOURCES} --branch ${POSTGRESQL_PLUGIN_VERSION} --depth 1 --single-branch /tmp/postgresql-plugin-${POSTGRESQL_PLUGIN_VERSION} && \
cd /tmp/postgresql-plugin-${POSTGRESQL_PLUGIN_VERSION} && \
make && \
strip /tmp/postgresql-plugin-${POSTGRESQL_PLUGIN_VERSION}/zabbix-agent2-plugin-postgresql && \
cp /tmp/postgresql-plugin-${POSTGRESQL_PLUGIN_VERSION}/zabbix-agent2-plugin-postgresql ${ZBX_OUTPUT_DIR}/agent2/sbin/zabbix-agent2-plugin/postgresql && \
cp /tmp/postgresql-plugin-${POSTGRESQL_PLUGIN_VERSION}/postgresql.conf ${ZBX_OUTPUT_DIR}/agent2/conf/zabbix_agent2.d/plugins.d/ && \
cd /tmp/ && \
git -c advice.detachedHead=false clone ${MSSQL_PLUGIN_SOURCES} --branch ${MSSQL_PLUGIN_VERSION} --depth 1 --single-branch /tmp/mssql-plugin-${MSSQL_PLUGIN_VERSION} && \
cd /tmp/mssql-plugin-${MSSQL_PLUGIN_VERSION} && \
make && \
strip /tmp/mssql-plugin-${MSSQL_PLUGIN_VERSION}/zabbix-agent2-plugin-mssql && \
cp /tmp/mssql-plugin-${MSSQL_PLUGIN_VERSION}/zabbix-agent2-plugin-mssql ${ZBX_OUTPUT_DIR}/agent2/sbin/zabbix-agent2-plugin/mssql && \
cp /tmp/mssql-plugin-${MSSQL_PLUGIN_VERSION}/mssql.conf ${ZBX_OUTPUT_DIR}/agent2/conf/zabbix_agent2.d/plugins.d/ && \
cd /tmp/ && \
git -c advice.detachedHead=false clone ${EMBER_PLUS_PLUGIN_SOURCES} --branch ${EMBER_PLUS_PLUGIN_VERSION} --depth 1 --single-branch /tmp/ember-plugin-${EMBER_PLUS_PLUGIN_VERSION} && \
cd /tmp/ember-plugin-${EMBER_PLUS_PLUGIN_VERSION} && \
make && \
strip /tmp/ember-plugin-${EMBER_PLUS_PLUGIN_VERSION}/zabbix-agent2-plugin-ember-plus && \
cp /tmp/ember-plugin-${EMBER_PLUS_PLUGIN_VERSION}/zabbix-agent2-plugin-ember-plus ${ZBX_OUTPUT_DIR}/agent2/sbin/zabbix-agent2-plugin/ember-plus && \
cp /tmp/ember-plugin-${EMBER_PLUS_PLUGIN_VERSION}/ember.conf ${ZBX_OUTPUT_DIR}/agent2/conf/zabbix_agent2.d/plugins.d/ && \
cd /tmp/ && \
git -c advice.detachedHead=false clone ${NVIDIA_GPU_PLUGIN_SOURCES} --branch ${NVIDIA_GPU_PLUGIN_VERSION} --depth 1 --single-branch /tmp/nvidia-gpu-plugin-${NVIDIA_GPU_PLUGIN_VERSION} && \
cd /tmp/nvidia-gpu-plugin-${NVIDIA_GPU_PLUGIN_VERSION} && \
make && \
strip /tmp/nvidia-gpu-plugin-${NVIDIA_GPU_PLUGIN_VERSION}/zabbix-agent2-plugin-nvidia-gpu && \
cp /tmp/nvidia-gpu-plugin-${NVIDIA_GPU_PLUGIN_VERSION}/zabbix-agent2-plugin-nvidia-gpu ${ZBX_OUTPUT_DIR}/agent2/sbin/zabbix-agent2-plugin/nvidia-gpu && \
cp /tmp/nvidia-gpu-plugin-${NVIDIA_GPU_PLUGIN_VERSION}/nvidia.conf ${ZBX_OUTPUT_DIR}/agent2/conf/zabbix_agent2.d/plugins.d/
--datadir=/usr/lib \
--libdir=/usr/lib/zabbix \
--prefix=/usr \
--sysconfdir=/etc/zabbix \
--enable-ipv6 \
--enable-agent \
--enable-agent2 \
--enable-java \
--enable-proxy \
--enable-server \
--enable-webservice \
--with-ares \
--with-ldap \
--with-libcurl \
--with-libmodbus \
--with-libpcre2 \
--with-libxml2 \
--with-${DB_TYPE} \
--with-net-snmp \
--with-openipmi \
--with-openssl \
--with-ssh \
--with-unixodbc \
--silent && \
jobs="$(nproc)" && \
make -j"${jobs}" -s dbschema && \
make -j"${jobs}" -s && \
make -j"${jobs}" -s gettext && \
cat "database/${DB_TYPE}/schema.sql" > "database/${DB_TYPE}/create.sql" && \
gzip -c "database/${DB_TYPE}/create.sql" > "${ZBX_OUTPUT_DIR}/proxy/database/${DB_TYPE}/create.sql.gz" && \
cat "database/${DB_TYPE}/images.sql" >> "database/${DB_TYPE}/create.sql" && \
cat "database/${DB_TYPE}/data.sql" >> "database/${DB_TYPE}/create.sql" && \
gzip -c "database/${DB_TYPE}/create.sql" > "${ZBX_OUTPUT_DIR}/server/database/${DB_TYPE}/create.sql.gz" && \
rm -f "database/${DB_TYPE}/create.sql" && \
strip src/zabbix_agent/zabbix_agentd && \
strip src/zabbix_server/zabbix_server && \
strip src/zabbix_proxy/zabbix_proxy && \
strip src/zabbix_get/zabbix_get && \
strip src/zabbix_sender/zabbix_sender && \
strip src/go/bin/zabbix_agent2 || true && \
strip src/go/bin/zabbix_web_service || true && \
cp src/zabbix_agent/zabbix_agentd "${ZBX_OUTPUT_DIR}/agent/sbin/" && \
cp conf/zabbix_agentd.conf "${ZBX_OUTPUT_DIR}/agent/conf/zabbix_agentd.conf.dist" && \
cp -a conf/zabbix_agentd/. "${ZBX_OUTPUT_DIR}/agent/conf/" && \
cp -a /tmp/conf/agent/. "${ZBX_OUTPUT_DIR}/agent/conf/" && \
cp src/go/bin/zabbix_agent2 "${ZBX_OUTPUT_DIR}/agent2/sbin/" && \
cp src/go/conf/zabbix_agent2.conf "${ZBX_OUTPUT_DIR}/agent2/conf/zabbix_agent2.conf.dist" && \
cp -a src/go/conf/zabbix_agent2.d/. "${ZBX_OUTPUT_DIR}/agent2/conf/zabbix_agent2.d/" && \
cp -a /tmp/conf/agent2/. "${ZBX_OUTPUT_DIR}/agent2/conf/" && \
cp src/zabbix_server/zabbix_server "${ZBX_OUTPUT_DIR}/server/sbin/" && \
cp conf/zabbix_server.conf "${ZBX_OUTPUT_DIR}/server/conf/zabbix_server.conf.dist" && \
cp -a /tmp/conf/server/. "${ZBX_OUTPUT_DIR}/server/conf/" && \
cp src/zabbix_proxy/zabbix_proxy "${ZBX_OUTPUT_DIR}/proxy/sbin/" && \
cp conf/zabbix_proxy.conf "${ZBX_OUTPUT_DIR}/proxy/conf/zabbix_proxy.conf.dist" && \
cp -a /tmp/conf/proxy/. "${ZBX_OUTPUT_DIR}/proxy/conf/" && \
cp -a src/zabbix_java/bin/. "${ZBX_OUTPUT_DIR}/java_gateway/sbin/bin/" && \
cp -a src/zabbix_java/lib/. "${ZBX_OUTPUT_DIR}/java_gateway/sbin/lib/" && \
cp src/go/bin/zabbix_web_service "${ZBX_OUTPUT_DIR}/web_service/sbin/" && \
cp src/go/conf/zabbix_web_service.conf "${ZBX_OUTPUT_DIR}/web_service/conf/zabbix_web_service.conf.dist" && \
cp -a /tmp/conf/web_service/. "${ZBX_OUTPUT_DIR}/web_service/conf/" && \
cp src/zabbix_get/zabbix_get "${ZBX_OUTPUT_DIR}/general/bin/" && \
cp src/zabbix_sender/zabbix_sender "${ZBX_OUTPUT_DIR}/general/bin/" && \
make -s distclean
RUN set -eux && \
cd "${ZBX_SOURCES_DIR}" && \
curl --retry 5 --retry-all-errors --retry-delay 2 --tlsv1.2 -sSf -L \
"https://raw.githubusercontent.com/notofonts/noto-cjk/main/Sans/OTF/Japanese/NotoSansCJKjp-Regular.otf" \
-o ui/assets/fonts/NotoSansCJKjp-Regular.otf && \
curl --retry 5 --retry-all-errors --retry-delay 2 --tlsv1.2 -sSf -L \
"https://raw.githubusercontent.com/notofonts/noto-cjk/main/Sans/LICENSE" \
-o ui/assets/fonts/OFL.txt && \
sed -i -r 's/(define\(.*_FONT_NAME.*)DejaVuSans/\1NotoSansCJKjp-Regular/' ui/include/defines.inc.php && \
sed -i -r 's/\.ttf/\.otf/' ui/include/graphs.inc.php && \
rm -f ui/assets/fonts/DejaVuSans.ttf && \
chmod o+r ui/assets/fonts/*
RUN --mount=type=cache,target=/root/.cache/go-build \
--mount=type=cache,target=/root/go/pkg/mod \
set -eux && \
mkdir -p "${ZBX_OUTPUT_DIR}/agent2/sbin/zabbix-agent2-plugin" && \
mkdir -p "${ZBX_OUTPUT_DIR}/agent2/conf/zabbix_agent2.d/plugins.d" && \
build_plugin() { \
name="$1"; \
repo="$2"; \
version="$3"; \
binary="$4"; \
conf="$5"; \
outname="$6"; \
workdir="/tmp/${name}-plugin-${version}"; \
rm -rf "$workdir"; \
git -c advice.detachedHead=false clone "$repo" \
--branch "$version" \
--depth 1 \
--single-branch \
"$workdir"; \
cd "$workdir"; \
make; \
strip "$binary" || true; \
cp "$binary" "${ZBX_OUTPUT_DIR}/agent2/sbin/zabbix-agent2-plugin/${outname}"; \
cp "$conf" "${ZBX_OUTPUT_DIR}/agent2/conf/zabbix_agent2.d/plugins.d/"; \
make clean; \
}; \
build_plugin mongodb "${MONGODB_PLUGIN_SOURCES}" "${MONGODB_PLUGIN_VERSION}" \
zabbix-agent2-plugin-mongodb mongodb.conf mongodb && \
build_plugin postgresql "${POSTGRESQL_PLUGIN_SOURCES}" "${POSTGRESQL_PLUGIN_VERSION}" \
zabbix-agent2-plugin-postgresql postgresql.conf postgresql && \
build_plugin mssql "${MSSQL_PLUGIN_SOURCES}" "${MSSQL_PLUGIN_VERSION}" \
zabbix-agent2-plugin-mssql mssql.conf mssql && \
build_plugin ember "${EMBER_PLUS_PLUGIN_SOURCES}" "${EMBER_PLUS_PLUGIN_VERSION}" \
zabbix-agent2-plugin-ember-plus ember.conf ember-plus && \
build_plugin nvidia-gpu "${NVIDIA_GPU_PLUGIN_SOURCES}" "${NVIDIA_GPU_PLUGIN_VERSION}" \
zabbix-agent2-plugin-nvidia-gpu nvidia.conf nvidia-gpu

View file

@ -1,4 +1,4 @@
# syntax=docker/dockerfile:1
# syntax=docker/dockerfile:1.6
ARG MAJOR_VERSION=7.4
ARG ZBX_VERSION=${MAJOR_VERSION}.8
ARG BUILD_BASE_IMAGE=zabbix-build-base:alpine-${ZBX_VERSION}
@ -12,6 +12,7 @@ ARG GIT_BRANCH
ARG ZBX_PLUGINS_VERSION=${GIT_BRANCH:-$ZBX_VERSION}
ARG CFLAGS
ARG LDFLAGS
LABEL org.opencontainers.image.authors="Alexey Pustovalov <alexey.pustovalov@zabbix.com>" \
org.opencontainers.image.description="Zabbix build base for SQLite3 based images" \
@ -25,135 +26,158 @@ LABEL org.opencontainers.image.authors="Alexey Pustovalov <alexey.pustovalov@zab
ENV ZBX_SOURCES_DIR=/tmp/zabbix-${ZBX_VERSION} ZBX_OUTPUT_DIR=/tmp/zabbix-${ZBX_VERSION}-output \
DB_TYPE=sqlite3 \
CFLAGS=${CFLAGS:-"-fPIC -pie -Wl,-z,relro,-z,now,-z,defs -D_FORTIFY_SOURCE=2 -fexceptions -O2 -pipe"} \
CFLAGS=${CFLAGS:-"-O2 -fPIE -fstack-protector-strong -D_FORTIFY_SOURCE=2 -Wformat -Wformat-security -pipe"} \
LDFLAGS=${LDFLAGS:-"-pie -Wl,-z,relro,-z,now,-z,defs -Wl,--as-needed"} \
MONGODB_PLUGIN_SOURCES=https://git.zabbix.com/scm/ap/mongodb.git MONGODB_PLUGIN_VERSION=${ZBX_PLUGINS_VERSION} \
POSTGRESQL_PLUGIN_SOURCES=https://git.zabbix.com/scm/ap/postgresql.git POSTGRESQL_PLUGIN_VERSION=${ZBX_PLUGINS_VERSION} \
MSSQL_PLUGIN_SOURCES=https://git.zabbix.com/scm/ap/mssql.git MSSQL_PLUGIN_VERSION=${ZBX_PLUGINS_VERSION} \
EMBER_PLUS_PLUGIN_SOURCES=https://git.zabbix.com/scm/ap/ember-plus.git EMBER_PLUS_PLUGIN_VERSION=${ZBX_PLUGINS_VERSION} \
NVIDIA_GPU_PLUGIN_SOURCES=https://git.zabbix.com/scm/ap/nvidia-gpu.git NVIDIA_GPU_PLUGIN_VERSION=${ZBX_PLUGINS_VERSION}
RUN --mount=type=cache,target=/root/.cache/go-build/ \
--mount=type=cache,target=/root/go/ \
--mount=from=sources,target=/tmp/src \
--mount=type=bind,source=patches/,target=/tmp/patches \
--mount=from=config_templates,target=/tmp/conf \
RUN --mount=from=sources,target=/tmp/src,ro \
--mount=type=bind,source=patches/,target=/tmp/patches,ro \
set -eux && \
cd /tmp/ && \
mkdir -p ${ZBX_OUTPUT_DIR}/agent/sbin/ && \
mkdir -p ${ZBX_OUTPUT_DIR}/agent/conf/ && \
mkdir -p ${ZBX_OUTPUT_DIR}/agent2/sbin/ && \
mkdir -p ${ZBX_OUTPUT_DIR}/agent2/conf/ && \
mkdir -p ${ZBX_OUTPUT_DIR}/agent2/conf/zabbix_agent2.d/plugins.d/ && \
mkdir -p ${ZBX_OUTPUT_DIR}/proxy/sbin/ && \
mkdir -p ${ZBX_OUTPUT_DIR}/proxy/conf/ && \
mkdir -p ${ZBX_OUTPUT_DIR}/java_gateway/sbin/ && \
mkdir -p ${ZBX_OUTPUT_DIR}/general/sbin/ && \
mkdir -p ${ZBX_OUTPUT_DIR}/general/bin/ && \
mkdir -p ${ZBX_OUTPUT_DIR}/general/conf/ && \
if [ -f "/tmp/src/bootstrap.sh" ]; then \
cp -R /tmp/src ${ZBX_SOURCES_DIR}; \
mkdir -p \
${ZBX_OUTPUT_DIR}/agent/sbin \
${ZBX_OUTPUT_DIR}/agent/conf \
${ZBX_OUTPUT_DIR}/agent2/sbin \
${ZBX_OUTPUT_DIR}/agent2/conf \
${ZBX_OUTPUT_DIR}/agent2/conf/zabbix_agent2.d/plugins.d \
${ZBX_OUTPUT_DIR}/proxy/sbin \
${ZBX_OUTPUT_DIR}/proxy/conf \
${ZBX_OUTPUT_DIR}/proxy/database/${DB_TYPE} \
${ZBX_OUTPUT_DIR}/java_gateway/sbin \
${ZBX_OUTPUT_DIR}/general/sbin \
${ZBX_OUTPUT_DIR}/general/bin \
${ZBX_OUTPUT_DIR}/general/conf && \
if [ -f /tmp/src/bootstrap.sh ]; then \
mkdir -p "${ZBX_SOURCES_DIR}" && \
cp -a /tmp/src/. "${ZBX_SOURCES_DIR}/"; \
else \
git -c advice.detachedHead=false clone ${ZBX_SOURCES} --branch ${GIT_BRANCH:-$ZBX_VERSION} --depth 1 --single-branch ${ZBX_SOURCES_DIR}; \
git -c advice.detachedHead=false clone \
"${ZBX_SOURCES}" \
--branch "${GIT_BRANCH:-$ZBX_VERSION}" \
--depth 1 \
--single-branch \
"${ZBX_SOURCES_DIR}"; \
fi && \
cd ${ZBX_SOURCES_DIR} && \
cd "${ZBX_SOURCES_DIR}" && \
for patch_filename in /tmp/patches/*.patch; do \
if [ -f "$patch_filename" ]; then \
patch -p1 < "$patch_filename"; \
fi \
[ -f "$patch_filename" ] || continue; \
patch -p1 < "$patch_filename"; \
done && \
zabbix_revision=`git rev-parse --short HEAD` && \
if git rev-parse --short HEAD >/dev/null 2>&1; then \
zabbix_revision="$(git rev-parse --short HEAD)"; \
else \
zabbix_revision="unknown"; \
fi && \
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 && \
sed -i "s/{ZABBIX_REVISION}/$zabbix_revision/g" src/zabbix_java/src/com/zabbix/gateway/GeneralInformation.java
RUN --mount=type=cache,target=/root/.cache/go-build \
--mount=type=cache,target=/root/go/pkg/mod \
--mount=from=config_templates,target=/tmp/conf,ro \
set -eux && \
cd "${ZBX_SOURCES_DIR}" && \
./bootstrap.sh && \
./configure \
--datadir=/usr/lib \
--libdir=/usr/lib/zabbix \
--prefix=/usr \
--sysconfdir=/etc/zabbix \
--enable-ipv6 \
--enable-agent \
--enable-agent2 \
--enable-java \
--enable-proxy \
--with-ares \
--with-ldap \
--with-libcurl \
--with-libmodbus \
--with-libpcre2 \
--with-libxml2 \
--with-${DB_TYPE} \
--with-net-snmp \
--with-openipmi \
--with-openssl \
--with-ssh \
--with-unixodbc \
--silent && \
make -j"$(nproc)" -s dbschema && \
make -j"$(nproc)" -s && \
mkdir /tmp/fonts/ && \
curl --tlsv1.2 -sSf -L "https://raw.githubusercontent.com/notofonts/noto-cjk/main/Sans/OTF/Japanese/NotoSansCJKjp-Regular.otf" -o ${ZBX_SOURCES_DIR}/ui/assets/fonts/NotoSansCJKjp-Regular.otf && \
curl --tlsv1.2 -sSf -L "https://raw.githubusercontent.com/notofonts/noto-cjk/main/Sans/LICENSE" -o ${ZBX_SOURCES_DIR}/ui/assets/fonts/OFL.txt && \
sed -i -r "s/(define\(.*_FONT_NAME.*)DejaVuSans/\1NotoSansCJKjp-Regular/" ${ZBX_SOURCES_DIR}/ui/include/defines.inc.php && \
sed -i -r "s/\.ttf/\.otf/" ${ZBX_SOURCES_DIR}/ui/include/graphs.inc.php && \
rm -f ${ZBX_SOURCES_DIR}/ui/assets/fonts/DejaVuSans.ttf && \
rm -rf /tmp/fonts/ && \
chmod o+r ${ZBX_SOURCES_DIR}/ui/assets/fonts/* && \
strip ${ZBX_SOURCES_DIR}/src/zabbix_agent/zabbix_agentd && \
strip ${ZBX_SOURCES_DIR}/src/zabbix_proxy/zabbix_proxy && \
strip ${ZBX_SOURCES_DIR}/src/go/bin/zabbix_agent2 && \
strip ${ZBX_SOURCES_DIR}/src/zabbix_get/zabbix_get && \
strip ${ZBX_SOURCES_DIR}/src/zabbix_sender/zabbix_sender && \
cp ${ZBX_SOURCES_DIR}/src/zabbix_agent/zabbix_agentd ${ZBX_OUTPUT_DIR}/agent/sbin/ && \
cp ${ZBX_SOURCES_DIR}/conf/zabbix_agentd.conf ${ZBX_OUTPUT_DIR}/agent/conf/zabbix_agentd.conf_template && \
cp /tmp/conf/agent/* ${ZBX_OUTPUT_DIR}/agent/conf/ && \
cp -R ${ZBX_SOURCES_DIR}/conf/zabbix_agentd/ ${ZBX_OUTPUT_DIR}/agent/conf/ && \
cp ${ZBX_SOURCES_DIR}/src/go/bin/zabbix_agent2 ${ZBX_OUTPUT_DIR}/agent2/sbin/ && \
cp ${ZBX_SOURCES_DIR}/src/go/conf/zabbix_agent2.conf ${ZBX_OUTPUT_DIR}/agent2/conf/zabbix_agent2.conf_template && \
cp /tmp/conf/agent2/* ${ZBX_OUTPUT_DIR}/agent2/conf/ && \
cp -R ${ZBX_SOURCES_DIR}/src/go/conf/zabbix_agent2.d/ ${ZBX_OUTPUT_DIR}/agent2/conf/ && \
cp ${ZBX_SOURCES_DIR}/src/zabbix_proxy/zabbix_proxy ${ZBX_OUTPUT_DIR}/proxy/sbin/ && \
cp ${ZBX_SOURCES_DIR}/conf/zabbix_proxy.conf ${ZBX_OUTPUT_DIR}/proxy/conf/zabbix_proxy.conf_template && \
cp /tmp/conf/proxy/* ${ZBX_OUTPUT_DIR}/proxy/conf/ && \
cp -R ${ZBX_SOURCES_DIR}/src/zabbix_java/bin/ ${ZBX_OUTPUT_DIR}/java_gateway/sbin/ && \
cp -R ${ZBX_SOURCES_DIR}/src/zabbix_java/lib/ ${ZBX_OUTPUT_DIR}/java_gateway/sbin/ && \
cp ${ZBX_SOURCES_DIR}/src/zabbix_get/zabbix_get ${ZBX_OUTPUT_DIR}/general/bin/ && \
cp ${ZBX_SOURCES_DIR}/src/zabbix_sender/zabbix_sender ${ZBX_OUTPUT_DIR}/general/bin/ && \
make -s distclean && \
cd /tmp/ && \
mkdir -p ${ZBX_OUTPUT_DIR}/agent2/sbin/zabbix-agent2-plugin/ && \
mkdir -p ${ZBX_OUTPUT_DIR}/agent2/conf/zabbix_agent2.d/plugins.d/ && \
git -c advice.detachedHead=false clone ${MONGODB_PLUGIN_SOURCES} --branch ${MONGODB_PLUGIN_VERSION} --depth 1 --single-branch /tmp/mongodb-plugin-${MONGODB_PLUGIN_VERSION} && \
cd /tmp/mongodb-plugin-${MONGODB_PLUGIN_VERSION} && \
make && \
strip /tmp/mongodb-plugin-${MONGODB_PLUGIN_VERSION}/zabbix-agent2-plugin-mongodb && \
cp /tmp/mongodb-plugin-${MONGODB_PLUGIN_VERSION}/zabbix-agent2-plugin-mongodb ${ZBX_OUTPUT_DIR}/agent2/sbin/zabbix-agent2-plugin/mongodb && \
cp /tmp/mongodb-plugin-${MONGODB_PLUGIN_VERSION}/mongodb.conf ${ZBX_OUTPUT_DIR}/agent2/conf/zabbix_agent2.d/plugins.d/ && \
cd /tmp/ && \
git -c advice.detachedHead=false clone ${POSTGRESQL_PLUGIN_SOURCES} --branch ${POSTGRESQL_PLUGIN_VERSION} --depth 1 --single-branch /tmp/postgresql-plugin-${POSTGRESQL_PLUGIN_VERSION} && \
cd /tmp/postgresql-plugin-${POSTGRESQL_PLUGIN_VERSION} && \
make && \
strip /tmp/postgresql-plugin-${POSTGRESQL_PLUGIN_VERSION}/zabbix-agent2-plugin-postgresql && \
cp /tmp/postgresql-plugin-${POSTGRESQL_PLUGIN_VERSION}/zabbix-agent2-plugin-postgresql ${ZBX_OUTPUT_DIR}/agent2/sbin/zabbix-agent2-plugin/postgresql && \
cp /tmp/postgresql-plugin-${POSTGRESQL_PLUGIN_VERSION}/postgresql.conf ${ZBX_OUTPUT_DIR}/agent2/conf/zabbix_agent2.d/plugins.d/ && \
cd /tmp/ && \
git -c advice.detachedHead=false clone ${MSSQL_PLUGIN_SOURCES} --branch ${MSSQL_PLUGIN_VERSION} --depth 1 --single-branch /tmp/mssql-plugin-${MSSQL_PLUGIN_VERSION} && \
cd /tmp/mssql-plugin-${MSSQL_PLUGIN_VERSION} && \
make && \
strip /tmp/mssql-plugin-${MSSQL_PLUGIN_VERSION}/zabbix-agent2-plugin-mssql && \
cp /tmp/mssql-plugin-${MSSQL_PLUGIN_VERSION}/zabbix-agent2-plugin-mssql ${ZBX_OUTPUT_DIR}/agent2/sbin/zabbix-agent2-plugin/mssql && \
cp /tmp/mssql-plugin-${MSSQL_PLUGIN_VERSION}/mssql.conf ${ZBX_OUTPUT_DIR}/agent2/conf/zabbix_agent2.d/plugins.d/ && \
cd /tmp/ && \
git -c advice.detachedHead=false clone ${EMBER_PLUS_PLUGIN_SOURCES} --branch ${EMBER_PLUS_PLUGIN_VERSION} --depth 1 --single-branch /tmp/ember-plugin-${EMBER_PLUS_PLUGIN_VERSION} && \
cd /tmp/ember-plugin-${EMBER_PLUS_PLUGIN_VERSION} && \
make && \
strip /tmp/ember-plugin-${EMBER_PLUS_PLUGIN_VERSION}/zabbix-agent2-plugin-ember-plus && \
cp /tmp/ember-plugin-${EMBER_PLUS_PLUGIN_VERSION}/zabbix-agent2-plugin-ember-plus ${ZBX_OUTPUT_DIR}/agent2/sbin/zabbix-agent2-plugin/ember-plus && \
cp /tmp/ember-plugin-${EMBER_PLUS_PLUGIN_VERSION}/ember.conf ${ZBX_OUTPUT_DIR}/agent2/conf/zabbix_agent2.d/plugins.d/ && \
cd /tmp/ && \
git -c advice.detachedHead=false clone ${NVIDIA_GPU_PLUGIN_SOURCES} --branch ${NVIDIA_GPU_PLUGIN_VERSION} --depth 1 --single-branch /tmp/nvidia-gpu-plugin-${NVIDIA_GPU_PLUGIN_VERSION} && \
cd /tmp/nvidia-gpu-plugin-${NVIDIA_GPU_PLUGIN_VERSION} && \
make && \
strip /tmp/nvidia-gpu-plugin-${NVIDIA_GPU_PLUGIN_VERSION}/zabbix-agent2-plugin-nvidia-gpu && \
cp /tmp/nvidia-gpu-plugin-${NVIDIA_GPU_PLUGIN_VERSION}/zabbix-agent2-plugin-nvidia-gpu ${ZBX_OUTPUT_DIR}/agent2/sbin/zabbix-agent2-plugin/nvidia-gpu && \
cp /tmp/nvidia-gpu-plugin-${NVIDIA_GPU_PLUGIN_VERSION}/nvidia.conf ${ZBX_OUTPUT_DIR}/agent2/conf/zabbix_agent2.d/plugins.d/
--datadir=/usr/lib \
--libdir=/usr/lib/zabbix \
--prefix=/usr \
--sysconfdir=/etc/zabbix \
--enable-ipv6 \
--enable-agent \
--enable-agent2 \
--enable-java \
--enable-proxy \
--with-ares \
--with-ldap \
--with-libcurl \
--with-libmodbus \
--with-libpcre2 \
--with-libxml2 \
--with-${DB_TYPE} \
--with-net-snmp \
--with-openipmi \
--with-openssl \
--with-ssh \
--with-unixodbc \
--silent && \
jobs="$(nproc)" && \
make -j"${jobs}" -s dbschema && \
make -j"${jobs}" -s && \
make -j"${jobs}" -s gettext && \
cat "database/${DB_TYPE}/schema.sql" > "database/${DB_TYPE}/create.sql" && \
gzip -c "database/${DB_TYPE}/create.sql" > "${ZBX_OUTPUT_DIR}/proxy/database/${DB_TYPE}/create.sql.gz" && \
strip src/zabbix_agent/zabbix_agentd && \
strip src/zabbix_proxy/zabbix_proxy && \
strip src/zabbix_get/zabbix_get && \
strip src/zabbix_sender/zabbix_sender && \
strip src/go/bin/zabbix_agent2 || true && \
cp src/zabbix_agent/zabbix_agentd "${ZBX_OUTPUT_DIR}/agent/sbin/" && \
cp conf/zabbix_agentd.conf "${ZBX_OUTPUT_DIR}/agent/conf/zabbix_agentd.conf.dist" && \
cp -a conf/zabbix_agentd/. "${ZBX_OUTPUT_DIR}/agent/conf/" && \
cp -a /tmp/conf/agent/. "${ZBX_OUTPUT_DIR}/agent/conf/" && \
cp src/go/bin/zabbix_agent2 "${ZBX_OUTPUT_DIR}/agent2/sbin/" && \
cp src/go/conf/zabbix_agent2.conf "${ZBX_OUTPUT_DIR}/agent2/conf/zabbix_agent2.conf.dist" && \
cp -a src/go/conf/zabbix_agent2.d/. "${ZBX_OUTPUT_DIR}/agent2/conf/zabbix_agent2.d/" && \
cp -a /tmp/conf/agent2/. "${ZBX_OUTPUT_DIR}/agent2/conf/" && \
cp src/zabbix_proxy/zabbix_proxy "${ZBX_OUTPUT_DIR}/proxy/sbin/" && \
cp conf/zabbix_proxy.conf "${ZBX_OUTPUT_DIR}/proxy/conf/zabbix_proxy.conf.dist" && \
cp -a /tmp/conf/proxy/. "${ZBX_OUTPUT_DIR}/proxy/conf/" && \
cp -a src/zabbix_java/bin/. "${ZBX_OUTPUT_DIR}/java_gateway/sbin/bin/" && \
cp -a src/zabbix_java/lib/. "${ZBX_OUTPUT_DIR}/java_gateway/sbin/lib/" && \
cp src/zabbix_get/zabbix_get "${ZBX_OUTPUT_DIR}/general/bin/" && \
cp src/zabbix_sender/zabbix_sender "${ZBX_OUTPUT_DIR}/general/bin/" && \
make -s distclean
RUN set -eux && \
cd "${ZBX_SOURCES_DIR}" && \
curl --retry 5 --retry-all-errors --retry-delay 2 --tlsv1.2 -sSf -L \
"https://raw.githubusercontent.com/notofonts/noto-cjk/main/Sans/OTF/Japanese/NotoSansCJKjp-Regular.otf" \
-o ui/assets/fonts/NotoSansCJKjp-Regular.otf && \
curl --retry 5 --retry-all-errors --retry-delay 2 --tlsv1.2 -sSf -L \
"https://raw.githubusercontent.com/notofonts/noto-cjk/main/Sans/LICENSE" \
-o ui/assets/fonts/OFL.txt && \
sed -i -r 's/(define\(.*_FONT_NAME.*)DejaVuSans/\1NotoSansCJKjp-Regular/' ui/include/defines.inc.php && \
sed -i -r 's/\.ttf/\.otf/' ui/include/graphs.inc.php && \
rm -f ui/assets/fonts/DejaVuSans.ttf && \
chmod o+r ui/assets/fonts/*
RUN --mount=type=cache,target=/root/.cache/go-build \
--mount=type=cache,target=/root/go/pkg/mod \
set -eux && \
mkdir -p "${ZBX_OUTPUT_DIR}/agent2/sbin/zabbix-agent2-plugin" && \
mkdir -p "${ZBX_OUTPUT_DIR}/agent2/conf/zabbix_agent2.d/plugins.d" && \
build_plugin() { \
name="$1"; \
repo="$2"; \
version="$3"; \
binary="$4"; \
conf="$5"; \
outname="$6"; \
workdir="/tmp/${name}-plugin-${version}"; \
rm -rf "$workdir"; \
git -c advice.detachedHead=false clone "$repo" \
--branch "$version" \
--depth 1 \
--single-branch \
"$workdir"; \
cd "$workdir"; \
make; \
strip "$binary" || true; \
cp "$binary" "${ZBX_OUTPUT_DIR}/agent2/sbin/zabbix-agent2-plugin/${outname}"; \
cp "$conf" "${ZBX_OUTPUT_DIR}/agent2/conf/zabbix_agent2.d/plugins.d/"; \
make clean; \
}; \
build_plugin mongodb "${MONGODB_PLUGIN_SOURCES}" "${MONGODB_PLUGIN_VERSION}" \
zabbix-agent2-plugin-mongodb mongodb.conf mongodb && \
build_plugin postgresql "${POSTGRESQL_PLUGIN_SOURCES}" "${POSTGRESQL_PLUGIN_VERSION}" \
zabbix-agent2-plugin-postgresql postgresql.conf postgresql && \
build_plugin mssql "${MSSQL_PLUGIN_SOURCES}" "${MSSQL_PLUGIN_VERSION}" \
zabbix-agent2-plugin-mssql mssql.conf mssql && \
build_plugin ember "${EMBER_PLUS_PLUGIN_SOURCES}" "${EMBER_PLUS_PLUGIN_VERSION}" \
zabbix-agent2-plugin-ember-plus ember.conf ember-plus && \
build_plugin nvidia-gpu "${NVIDIA_GPU_PLUGIN_SOURCES}" "${NVIDIA_GPU_PLUGIN_VERSION}" \
zabbix-agent2-plugin-nvidia-gpu nvidia.conf nvidia-gpu

View file

@ -1,4 +1,4 @@
# syntax=docker/dockerfile:1
# syntax=docker/dockerfile:1.6
ARG OS_BASE_IMAGE=alpine:3.23
ARG MAJOR_VERSION=7.4
ARG ZBX_VERSION=${MAJOR_VERSION}.8
@ -13,10 +13,11 @@ ARG ZBX_VERSION
ARG ZBX_SOURCES=https://git.zabbix.com/scm/zbx/zabbix.git
ENV TERM=xterm \
ZBX_VERSION=${ZBX_VERSION} ZBX_SOURCES=${ZBX_SOURCES} \
ZBX_VERSION=${ZBX_VERSION} \
ZBX_SOURCES=${ZBX_SOURCES} \
PATH=${PATH}:/usr/lib/jvm/default-jvm/bin/ JAVA_HOME=/usr/lib/jvm/default-jvm \
ZABBIX_USER_HOME_DIR="/var/lib/zabbix" \
ZABBIX_CONF_DIR="/etc/zabbix"
ZABBIX_USER_HOME_DIR=/var/lib/zabbix \
ZABBIX_CONF_DIR=/etc/zabbix
LABEL org.opencontainers.image.authors="Alexey Pustovalov <alexey.pustovalov@zabbix.com>" \
org.opencontainers.image.description="Zabbix Java Gateway performs native support for monitoring JMX applications" \
@ -30,15 +31,13 @@ LABEL org.opencontainers.image.authors="Alexey Pustovalov <alexey.pustovalov@zab
STOPSIGNAL SIGTERM
COPY --from=builder ["/tmp/zabbix-${ZBX_VERSION}-output/java_gateway/sbin/", "/usr/sbin/zabbix_java/"]
COPY --from=builder /tmp/zabbix-${ZBX_VERSION}-output/java_gateway/sbin/ /usr/sbin/zabbix_java/
RUN set -eux && \
ARCH_SUFFIX="$(cat /etc/apk/arch)"; \
ARCH_SUFFIX="$(apk --print-arch)"; \
case "$ARCH_SUFFIX" in \
riscv64) \
openjdk_packages='openjdk21 openjdk21-jre-headless'; \
;; \
*) openjdk_packages='openjdk17-jre-headless'; \
riscv64) openjdk_packages='openjdk21 openjdk21-jre-headless' ;; \
*) openjdk_packages='openjdk17 openjdk17-jre-headless' ;; \
esac; \
INSTALL_PKGS="bash \
$openjdk_packages" && \
@ -59,8 +58,8 @@ RUN set -eux && \
--shell /sbin/nologin \
--home ${ZABBIX_USER_HOME_DIR} \
zabbix && \
mkdir -p ${ZABBIX_CONF_DIR}/ && \
mkdir -p /usr/sbin/zabbix_java/ext_lib/ && \
mkdir -p ${ZABBIX_CONF_DIR}/ \
/usr/sbin/zabbix_java/ext_lib/ && \
rm -rf /usr/sbin/zabbix_java/lib/logback.xml && \
mv /usr/sbin/zabbix_java/lib/logback-console.xml ${ZABBIX_CONF_DIR}/zabbix_java_gateway_logback.xml && \
chown --quiet -R zabbix:root ${ZABBIX_CONF_DIR}/ /usr/sbin/zabbix_java/ && \

View file

@ -1,4 +1,4 @@
# syntax=docker/dockerfile:1
# syntax=docker/dockerfile:1.6
ARG OS_BASE_IMAGE=alpine:3.23
ARG MAJOR_VERSION=7.4
ARG ZBX_VERSION=${MAJOR_VERSION}.8
@ -13,21 +13,22 @@ ARG ZBX_VERSION
ARG ZBX_SOURCES=https://git.zabbix.com/scm/zbx/zabbix.git
ENV TERM=xterm \
ZBX_VERSION=${ZBX_VERSION} ZBX_SOURCES=${ZBX_SOURCES} \
ZBX_VERSION=${ZBX_VERSION} \
ZBX_SOURCES=${ZBX_SOURCES} \
MIBDIRS=/usr/share/snmp/mibs:/var/lib/zabbix/mibs MIBS=+ALL \
NMAP_PRIVILEGED="" \
NMAP_PRIVILEGED= \
MARIADB_TLS_DISABLE_PEER_VERIFICATION=1 \
ZABBIX_USER_HOME_DIR="/var/lib/zabbix" \
ZABBIX_CONF_DIR="/etc/zabbix"
ZABBIX_USER_HOME_DIR=/var/lib/zabbix \
ZABBIX_CONF_DIR=/etc/zabbix
ENV ZBX_DB_NAME="dummy_db_name" \
ZBX_FPINGLOCATION="/usr/sbin/fping" \
ZBX_LOADMODULEPATH="${ZABBIX_USER_HOME_DIR}/modules" \
ZBX_SNMPTRAPPERFILE="${ZABBIX_USER_HOME_DIR}/snmptraps/snmptraps.log" \
ZBX_SSHKEYLOCATION="${ZABBIX_USER_HOME_DIR}/ssh_keys/" \
ZBX_SSLCERTLOCATION="${ZABBIX_USER_HOME_DIR}/ssl/certs/" \
ZBX_SSLKEYLOCATION="${ZABBIX_USER_HOME_DIR}/ssl/keys/" \
ZBX_SSLCALOCATION="${ZABBIX_USER_HOME_DIR}/ssl/ssl_ca/"
ENV ZBX_DB_NAME=dummy_db_name \
ZBX_FPINGLOCATION=/usr/sbin/fping \
ZBX_LOADMODULEPATH=${ZABBIX_USER_HOME_DIR}/modules \
ZBX_SNMPTRAPPERFILE=${ZABBIX_USER_HOME_DIR}/snmptraps/snmptraps.log \
ZBX_SSHKEYLOCATION=${ZABBIX_USER_HOME_DIR}/ssh_keys/ \
ZBX_SSLCERTLOCATION=${ZABBIX_USER_HOME_DIR}/ssl/certs/ \
ZBX_SSLKEYLOCATION=${ZABBIX_USER_HOME_DIR}/ssl/keys/ \
ZBX_SSLCALOCATION=${ZABBIX_USER_HOME_DIR}/ssl/ssl_ca/
LABEL org.opencontainers.image.authors="Alexey Pustovalov <alexey.pustovalov@zabbix.com>" \
org.opencontainers.image.description="Zabbix proxy with MySQL database support" \
@ -41,10 +42,11 @@ LABEL org.opencontainers.image.authors="Alexey Pustovalov <alexey.pustovalov@zab
STOPSIGNAL SIGTERM
COPY --from=builder ["/tmp/zabbix-${ZBX_VERSION}-output/proxy/sbin/zabbix_proxy", "/usr/sbin/zabbix_proxy"]
COPY --from=builder ["/tmp/zabbix-${ZBX_VERSION}-output/general/bin/*", "/usr/bin/"]
COPY --from=builder ["/tmp/zabbix-${ZBX_VERSION}-output/proxy/conf/", "${ZABBIX_CONF_DIR}/"]
COPY --from=builder ["/tmp/zabbix-${ZBX_VERSION}-output/proxy/database/mysql/", "/usr/share/doc/zabbix-proxy-mysql/"]
COPY --from=builder /tmp/zabbix-${ZBX_VERSION}-output/proxy/sbin/zabbix_proxy /usr/sbin/zabbix_proxy
COPY --from=builder /tmp/zabbix-${ZBX_VERSION}-output/general/bin/zabbix_get /usr/bin/
COPY --from=builder /tmp/zabbix-${ZBX_VERSION}-output/general/bin/zabbix_sender /usr/bin/
COPY --from=builder /tmp/zabbix-${ZBX_VERSION}-output/proxy/conf/ ${ZABBIX_CONF_DIR}/
COPY --from=builder /tmp/zabbix-${ZBX_VERSION}-output/proxy/database/mysql/ /usr/share/doc/zabbix-proxy-mysql/
RUN set -eux && \
INSTALL_PKGS="bash \
@ -90,20 +92,20 @@ RUN set -eux && \
chgrp zabbix /usr/bin/nmap && \
setcap cap_net_raw+eip /usr/bin/nmap && \
chmod u+s /usr/sbin/fping && \
mkdir -p ${ZABBIX_CONF_DIR}/ && \
mkdir -p ${ZABBIX_USER_HOME_DIR} && \
mkdir -p ${ZABBIX_USER_HOME_DIR}/enc && \
mkdir -p ${ZABBIX_USER_HOME_DIR}/enc_internal && \
mkdir -p ${ZABBIX_USER_HOME_DIR}/mibs && \
mkdir -p ${ZABBIX_USER_HOME_DIR}/modules && \
mkdir -p ${ZABBIX_USER_HOME_DIR}/snmptraps && \
mkdir -p ${ZABBIX_USER_HOME_DIR}/ssh_keys && \
mkdir -p ${ZABBIX_USER_HOME_DIR}/ssl && \
mkdir -p ${ZABBIX_USER_HOME_DIR}/ssl/certs && \
mkdir -p ${ZABBIX_USER_HOME_DIR}/ssl/keys && \
mkdir -p ${ZABBIX_USER_HOME_DIR}/ssl/ssl_ca && \
mkdir -p /usr/lib/zabbix/externalscripts && \
mkdir -p /usr/share/doc/zabbix-proxy-mysql && \
mkdir -p ${ZABBIX_CONF_DIR} \
${ZABBIX_USER_HOME_DIR} \
${ZABBIX_USER_HOME_DIR}/enc \
${ZABBIX_USER_HOME_DIR}/enc_internal \
${ZABBIX_USER_HOME_DIR}/mibs \
${ZABBIX_USER_HOME_DIR}/modules \
${ZABBIX_USER_HOME_DIR}/snmptraps \
${ZABBIX_USER_HOME_DIR}/ssh_keys \
${ZABBIX_USER_HOME_DIR}/ssl \
${ZABBIX_USER_HOME_DIR}/ssl/certs \
${ZABBIX_USER_HOME_DIR}/ssl/keys \
${ZABBIX_USER_HOME_DIR}/ssl/ssl_ca \
/usr/lib/zabbix/externalscripts \
/usr/share/doc/zabbix-proxy-mysql && \
chown --quiet -R zabbix:root ${ZABBIX_CONF_DIR}/zabbix_proxy_modules.conf ${ZABBIX_USER_HOME_DIR} && \
chown --quiet zabbix:root ${ZABBIX_CONF_DIR}/ && \
chgrp -R 0 ${ZABBIX_CONF_DIR}/zabbix_proxy_modules.conf ${ZABBIX_USER_HOME_DIR} && \

View file

@ -1,4 +1,4 @@
# syntax=docker/dockerfile:1
# syntax=docker/dockerfile:1.6
ARG OS_BASE_IMAGE=alpine:3.23
ARG MAJOR_VERSION=7.4
ARG ZBX_VERSION=${MAJOR_VERSION}.8
@ -13,19 +13,20 @@ ARG ZBX_VERSION
ARG ZBX_SOURCES=https://git.zabbix.com/scm/zbx/zabbix.git
ENV TERM=xterm \
ZBX_VERSION=${ZBX_VERSION} ZBX_SOURCES=${ZBX_SOURCES} \
ZBX_VERSION=${ZBX_VERSION} \
ZBX_SOURCES=${ZBX_SOURCES} \
MIBDIRS=/usr/share/snmp/mibs:/var/lib/zabbix/mibs MIBS=+ALL \
NMAP_PRIVILEGED="" \
ZABBIX_USER_HOME_DIR="/var/lib/zabbix" \
ZABBIX_CONF_DIR="/etc/zabbix"
NMAP_PRIVILEGED= \
ZABBIX_USER_HOME_DIR=/var/lib/zabbix \
ZABBIX_CONF_DIR=/etc/zabbix
ENV ZBX_FPINGLOCATION="/usr/sbin/fping" \
ZBX_LOADMODULEPATH="${ZABBIX_USER_HOME_DIR}/modules" \
ZBX_SNMPTRAPPERFILE="${ZABBIX_USER_HOME_DIR}/snmptraps/snmptraps.log" \
ZBX_SSHKEYLOCATION="${ZABBIX_USER_HOME_DIR}/ssh_keys/" \
ZBX_SSLCERTLOCATION="${ZABBIX_USER_HOME_DIR}/ssl/certs/" \
ZBX_SSLKEYLOCATION="${ZABBIX_USER_HOME_DIR}/ssl/keys/" \
ZBX_SSLCALOCATION="${ZABBIX_USER_HOME_DIR}/ssl/ssl_ca/"
ENV ZBX_FPINGLOCATION=/usr/sbin/fping \
ZBX_LOADMODULEPATH=${ZABBIX_USER_HOME_DIR}/modules \
ZBX_SNMPTRAPPERFILE=${ZABBIX_USER_HOME_DIR}/snmptraps/snmptraps.log \
ZBX_SSHKEYLOCATION=${ZABBIX_USER_HOME_DIR}/ssh_keys/ \
ZBX_SSLCERTLOCATION=${ZABBIX_USER_HOME_DIR}/ssl/certs/ \
ZBX_SSLKEYLOCATION=${ZABBIX_USER_HOME_DIR}/ssl/keys/ \
ZBX_SSLCALOCATION=${ZABBIX_USER_HOME_DIR}/ssl/ssl_ca/
LABEL org.opencontainers.image.authors="Alexey Pustovalov <alexey.pustovalov@zabbix.com>" \
org.opencontainers.image.description="Zabbix proxy with SQLite3 database support" \
@ -39,9 +40,10 @@ LABEL org.opencontainers.image.authors="Alexey Pustovalov <alexey.pustovalov@zab
STOPSIGNAL SIGTERM
COPY --from=builder ["/tmp/zabbix-${ZBX_VERSION}-output/proxy/sbin/zabbix_proxy", "/usr/sbin/zabbix_proxy"]
COPY --from=builder ["/tmp/zabbix-${ZBX_VERSION}-output/proxy/conf/", "${ZABBIX_CONF_DIR}/"]
COPY --from=builder ["/tmp/zabbix-${ZBX_VERSION}-output/general/bin/", "/usr/bin/"]
COPY --from=builder /tmp/zabbix-${ZBX_VERSION}-output/proxy/sbin/zabbix_proxy /usr/sbin/zabbix_proxy
COPY --from=builder /tmp/zabbix-${ZBX_VERSION}-output/general/bin/zabbix_get /usr/bin/
COPY --from=builder /tmp/zabbix-${ZBX_VERSION}-output/general/bin/zabbix_sender /usr/bin/
COPY --from=builder /tmp/zabbix-${ZBX_VERSION}-output/proxy/conf/ ${ZABBIX_CONF_DIR}/
RUN set -eux && \
INSTALL_PKGS="bash \
@ -85,20 +87,20 @@ RUN set -eux && \
chgrp zabbix /usr/bin/nmap && \
setcap cap_net_raw+eip /usr/bin/nmap && \
chmod u+s /usr/sbin/fping && \
mkdir -p ${ZABBIX_CONF_DIR} && \
mkdir -p ${ZABBIX_USER_HOME_DIR} && \
mkdir -p ${ZABBIX_USER_HOME_DIR}/db_data && \
mkdir -p ${ZABBIX_USER_HOME_DIR}/enc && \
mkdir -p ${ZABBIX_USER_HOME_DIR}/enc_internal && \
mkdir -p ${ZABBIX_USER_HOME_DIR}/mibs && \
mkdir -p ${ZABBIX_USER_HOME_DIR}/modules && \
mkdir -p ${ZABBIX_USER_HOME_DIR}/snmptraps && \
mkdir -p ${ZABBIX_USER_HOME_DIR}/ssh_keys && \
mkdir -p ${ZABBIX_USER_HOME_DIR}/ssl && \
mkdir -p ${ZABBIX_USER_HOME_DIR}/ssl/certs && \
mkdir -p ${ZABBIX_USER_HOME_DIR}/ssl/keys && \
mkdir -p ${ZABBIX_USER_HOME_DIR}/ssl/ssl_ca && \
mkdir -p /usr/lib/zabbix/externalscripts && \
mkdir -p ${ZABBIX_CONF_DIR} \
${ZABBIX_USER_HOME_DIR} \
${ZABBIX_USER_HOME_DIR}/db_data \
${ZABBIX_USER_HOME_DIR}/enc \
${ZABBIX_USER_HOME_DIR}/enc_internal \
${ZABBIX_USER_HOME_DIR}/mibs \
${ZABBIX_USER_HOME_DIR}/modules \
${ZABBIX_USER_HOME_DIR}/snmptraps \
${ZABBIX_USER_HOME_DIR}/ssh_keys \
${ZABBIX_USER_HOME_DIR}/ssl \
${ZABBIX_USER_HOME_DIR}/ssl/certs \
${ZABBIX_USER_HOME_DIR}/ssl/keys \
${ZABBIX_USER_HOME_DIR}/ssl/ssl_ca \
/usr/lib/zabbix/externalscripts && \
chown --quiet -R zabbix:root ${ZABBIX_CONF_DIR}/zabbix_proxy_modules.conf ${ZABBIX_USER_HOME_DIR} && \
chown --quiet zabbix:root ${ZABBIX_CONF_DIR}/ && \
chgrp -R 0 ${ZABBIX_CONF_DIR}/zabbix_proxy_modules.conf ${ZABBIX_USER_HOME_DIR} && \

View file

@ -1,4 +1,4 @@
# syntax=docker/dockerfile:1
# syntax=docker/dockerfile:1.6
ARG OS_BASE_IMAGE=alpine:3.23
ARG MAJOR_VERSION=7.4
ARG ZBX_VERSION=${MAJOR_VERSION}.8
@ -13,21 +13,22 @@ ARG ZBX_VERSION
ARG ZBX_SOURCES=https://git.zabbix.com/scm/zbx/zabbix.git
ENV TERM=xterm \
ZBX_VERSION=${ZBX_VERSION} ZBX_SOURCES=${ZBX_SOURCES} \
ZBX_VERSION=${ZBX_VERSION} \
ZBX_SOURCES=${ZBX_SOURCES} \
MIBDIRS=/usr/share/snmp/mibs:/var/lib/zabbix/mibs MIBS=+ALL \
NMAP_PRIVILEGED="" \
NMAP_PRIVILEGED= \
MARIADB_TLS_DISABLE_PEER_VERIFICATION=1 \
ZABBIX_USER_HOME_DIR="/var/lib/zabbix" \
ZABBIX_CONF_DIR="/etc/zabbix"
ZABBIX_USER_HOME_DIR=/var/lib/zabbix \
ZABBIX_CONF_DIR=/etc/zabbix
ENV ZBX_DB_NAME="dummy_db_name" \
ZBX_FPINGLOCATION="/usr/sbin/fping" \
ZBX_LOADMODULEPATH="${ZABBIX_USER_HOME_DIR}/modules" \
ZBX_SNMPTRAPPERFILE="${ZABBIX_USER_HOME_DIR}/snmptraps/snmptraps.log" \
ZBX_SSHKEYLOCATION="${ZABBIX_USER_HOME_DIR}/ssh_keys/" \
ZBX_SSLCERTLOCATION="${ZABBIX_USER_HOME_DIR}/ssl/certs/" \
ZBX_SSLKEYLOCATION="${ZABBIX_USER_HOME_DIR}/ssl/keys/" \
ZBX_SSLCALOCATION="${ZABBIX_USER_HOME_DIR}/ssl/ssl_ca/"
ENV ZBX_DB_NAME=dummy_db_name \
ZBX_FPINGLOCATION=/usr/sbin/fping \
ZBX_LOADMODULEPATH=${ZABBIX_USER_HOME_DIR}/modules \
ZBX_SNMPTRAPPERFILE=${ZABBIX_USER_HOME_DIR}/snmptraps/snmptraps.log \
ZBX_SSHKEYLOCATION=${ZABBIX_USER_HOME_DIR}/ssh_keys/ \
ZBX_SSLCERTLOCATION=${ZABBIX_USER_HOME_DIR}/ssl/certs/ \
ZBX_SSLKEYLOCATION=${ZABBIX_USER_HOME_DIR}/ssl/keys/ \
ZBX_SSLCALOCATION=${ZABBIX_USER_HOME_DIR}/ssl/ssl_ca/
LABEL org.opencontainers.image.authors="Alexey Pustovalov <alexey.pustovalov@zabbix.com>" \
org.opencontainers.image.description="Zabbix server with MySQL database support" \
@ -41,10 +42,11 @@ LABEL org.opencontainers.image.authors="Alexey Pustovalov <alexey.pustovalov@zab
STOPSIGNAL SIGTERM
COPY --from=builder ["/tmp/zabbix-${ZBX_VERSION}-output/server/sbin/zabbix_server", "/usr/sbin/zabbix_server"]
COPY --from=builder ["/tmp/zabbix-${ZBX_VERSION}-output/general/bin/*", "/usr/bin/"]
COPY --from=builder ["/tmp/zabbix-${ZBX_VERSION}-output/server/conf/", "${ZABBIX_CONF_DIR}/"]
COPY --from=builder ["/tmp/zabbix-${ZBX_VERSION}-output/server/database/mysql/create.sql.gz", "/usr/share/doc/zabbix-server-mysql/create.sql.gz"]
COPY --from=builder /tmp/zabbix-${ZBX_VERSION}-output/server/sbin/zabbix_server /usr/sbin/zabbix_server
COPY --from=builder /tmp/zabbix-${ZBX_VERSION}-output/general/bin/zabbix_get /usr/bin/
COPY --from=builder /tmp/zabbix-${ZBX_VERSION}-output/general/bin/zabbix_sender /usr/bin/
COPY --from=builder /tmp/zabbix-${ZBX_VERSION}-output/server/conf/ ${ZABBIX_CONF_DIR}/
COPY --from=builder /tmp/zabbix-${ZBX_VERSION}-output/server/database/mysql/create.sql.gz /usr/share/doc/zabbix-server-mysql/create.sql.gz
RUN set -eux && \
INSTALL_PKGS="bash \
@ -91,23 +93,23 @@ RUN set -eux && \
chgrp zabbix /usr/bin/nmap && \
setcap cap_net_raw+eip /usr/bin/nmap && \
chmod u+s /usr/sbin/fping && \
mkdir -p ${ZABBIX_CONF_DIR} && \
mkdir -p ${ZABBIX_USER_HOME_DIR} && \
mkdir -p ${ZABBIX_USER_HOME_DIR}/dbscripts && \
mkdir -p ${ZABBIX_USER_HOME_DIR}/enc && \
mkdir -p ${ZABBIX_USER_HOME_DIR}/enc_internal && \
mkdir -p ${ZABBIX_USER_HOME_DIR}/export && \
mkdir -p ${ZABBIX_USER_HOME_DIR}/mibs && \
mkdir -p ${ZABBIX_USER_HOME_DIR}/modules && \
mkdir -p ${ZABBIX_USER_HOME_DIR}/snmptraps && \
mkdir -p ${ZABBIX_USER_HOME_DIR}/ssh_keys && \
mkdir -p ${ZABBIX_USER_HOME_DIR}/ssl && \
mkdir -p ${ZABBIX_USER_HOME_DIR}/ssl/certs && \
mkdir -p ${ZABBIX_USER_HOME_DIR}/ssl/keys && \
mkdir -p ${ZABBIX_USER_HOME_DIR}/ssl/ssl_ca && \
mkdir -p /usr/lib/zabbix/alertscripts && \
mkdir -p /usr/lib/zabbix/externalscripts && \
mkdir -p /usr/share/doc/zabbix-server-mysql && \
mkdir -p ${ZABBIX_CONF_DIR} \
${ZABBIX_USER_HOME_DIR} \
${ZABBIX_USER_HOME_DIR}/dbscripts \
${ZABBIX_USER_HOME_DIR}/enc \
${ZABBIX_USER_HOME_DIR}/enc_internal \
${ZABBIX_USER_HOME_DIR}/export \
${ZABBIX_USER_HOME_DIR}/mibs \
${ZABBIX_USER_HOME_DIR}/modules \
${ZABBIX_USER_HOME_DIR}/snmptraps \
${ZABBIX_USER_HOME_DIR}/ssh_keys \
${ZABBIX_USER_HOME_DIR}/ssl \
${ZABBIX_USER_HOME_DIR}/ssl/certs \
${ZABBIX_USER_HOME_DIR}/ssl/keys \
${ZABBIX_USER_HOME_DIR}/ssl/ssl_ca \
/usr/lib/zabbix/alertscripts \
/usr/lib/zabbix/externalscripts \
/usr/share/doc/zabbix-server-mysql && \
chown --quiet -R zabbix:root ${ZABBIX_CONF_DIR}/zabbix_server_modules.conf ${ZABBIX_USER_HOME_DIR} && \
chown --quiet zabbix:root ${ZABBIX_CONF_DIR}/ && \
chgrp -R 0 ${ZABBIX_CONF_DIR}/zabbix_server_modules.conf ${ZABBIX_USER_HOME_DIR} && \

View file

@ -1,4 +1,4 @@
# syntax=docker/dockerfile:1
# syntax=docker/dockerfile:1.6
ARG OS_BASE_IMAGE=alpine:3.23
ARG MAJOR_VERSION=7.4
ARG ZBX_VERSION=${MAJOR_VERSION}.8
@ -13,20 +13,21 @@ ARG ZBX_VERSION
ARG ZBX_SOURCES=https://git.zabbix.com/scm/zbx/zabbix.git
ENV TERM=xterm \
ZBX_VERSION=${ZBX_VERSION} ZBX_SOURCES=${ZBX_SOURCES} \
ZBX_VERSION=${ZBX_VERSION} \
ZBX_SOURCES=${ZBX_SOURCES} \
MIBDIRS=/usr/share/snmp/mibs:/var/lib/zabbix/mibs MIBS=+ALL \
NMAP_PRIVILEGED="" \
ZABBIX_USER_HOME_DIR="/var/lib/zabbix" \
ZABBIX_CONF_DIR="/etc/zabbix"
NMAP_PRIVILEGED= \
ZABBIX_USER_HOME_DIR=/var/lib/zabbix \
ZABBIX_CONF_DIR=/etc/zabbix
ENV ZBX_DB_NAME="dummy_db_name" \
ZBX_FPINGLOCATION="/usr/sbin/fping" \
ZBX_LOADMODULEPATH="${ZABBIX_USER_HOME_DIR}/modules" \
ZBX_SNMPTRAPPERFILE="${ZABBIX_USER_HOME_DIR}/snmptraps/snmptraps.log" \
ZBX_SSHKEYLOCATION="${ZABBIX_USER_HOME_DIR}/ssh_keys/" \
ZBX_SSLCERTLOCATION="${ZABBIX_USER_HOME_DIR}/ssl/certs/" \
ZBX_SSLKEYLOCATION="${ZABBIX_USER_HOME_DIR}/ssl/keys/" \
ZBX_SSLCALOCATION="${ZABBIX_USER_HOME_DIR}/ssl/ssl_ca/"
ENV ZBX_DB_NAME=dummy_db_name \
ZBX_FPINGLOCATION=/usr/sbin/fping \
ZBX_LOADMODULEPATH=${ZABBIX_USER_HOME_DIR}/modules \
ZBX_SNMPTRAPPERFILE=${ZABBIX_USER_HOME_DIR}/snmptraps/snmptraps.log \
ZBX_SSHKEYLOCATION=${ZABBIX_USER_HOME_DIR}/ssh_keys/ \
ZBX_SSLCERTLOCATION=${ZABBIX_USER_HOME_DIR}/ssl/certs/ \
ZBX_SSLKEYLOCATION=${ZABBIX_USER_HOME_DIR}/ssl/keys/ \
ZBX_SSLCALOCATION=${ZABBIX_USER_HOME_DIR}/ssl/ssl_ca/
LABEL org.opencontainers.image.authors="Alexey Pustovalov <alexey.pustovalov@zabbix.com>" \
org.opencontainers.image.description="Zabbix server with PostgreSQL database support" \
@ -40,10 +41,11 @@ LABEL org.opencontainers.image.authors="Alexey Pustovalov <alexey.pustovalov@zab
STOPSIGNAL SIGTERM
COPY --from=builder ["/tmp/zabbix-${ZBX_VERSION}-output/server/sbin/zabbix_server", "/usr/sbin/zabbix_server"]
COPY --from=builder ["/tmp/zabbix-${ZBX_VERSION}-output/general/bin/*", "/usr/bin/"]
COPY --from=builder ["/tmp/zabbix-${ZBX_VERSION}-output/server/conf/", "${ZABBIX_CONF_DIR}/"]
COPY --from=builder ["/tmp/zabbix-${ZBX_VERSION}-output/server/database/postgresql/", "/usr/share/doc/zabbix-server-postgresql/"]
COPY --from=builder /tmp/zabbix-${ZBX_VERSION}-output/server/sbin/zabbix_server /usr/sbin/zabbix_server
COPY --from=builder /tmp/zabbix-${ZBX_VERSION}-output/general/bin/zabbix_get /usr/bin/
COPY --from=builder /tmp/zabbix-${ZBX_VERSION}-output/general/bin/zabbix_sender /usr/bin/
COPY --from=builder /tmp/zabbix-${ZBX_VERSION}-output/server/conf/ ${ZABBIX_CONF_DIR}/
COPY --from=builder /tmp/zabbix-${ZBX_VERSION}-output/server/database/postgresql/ /usr/share/doc/zabbix-server-postgresql/
RUN set -eux && \
INSTALL_PKGS="bash \
@ -89,23 +91,23 @@ RUN set -eux && \
chgrp zabbix /usr/bin/nmap && \
setcap cap_net_raw+eip /usr/bin/nmap && \
chmod u+s /usr/sbin/fping && \
mkdir -p ${ZABBIX_CONF_DIR} && \
mkdir -p ${ZABBIX_USER_HOME_DIR} && \
mkdir -p ${ZABBIX_USER_HOME_DIR}/dbscripts && \
mkdir -p ${ZABBIX_USER_HOME_DIR}/enc && \
mkdir -p ${ZABBIX_USER_HOME_DIR}/enc_internal && \
mkdir -p ${ZABBIX_USER_HOME_DIR}/export && \
mkdir -p ${ZABBIX_USER_HOME_DIR}/mibs && \
mkdir -p ${ZABBIX_USER_HOME_DIR}/modules && \
mkdir -p ${ZABBIX_USER_HOME_DIR}/snmptraps && \
mkdir -p ${ZABBIX_USER_HOME_DIR}/ssh_keys && \
mkdir -p ${ZABBIX_USER_HOME_DIR}/ssl && \
mkdir -p ${ZABBIX_USER_HOME_DIR}/ssl/certs && \
mkdir -p ${ZABBIX_USER_HOME_DIR}/ssl/keys && \
mkdir -p ${ZABBIX_USER_HOME_DIR}/ssl/ssl_ca && \
mkdir -p /usr/lib/zabbix/alertscripts && \
mkdir -p /usr/lib/zabbix/externalscripts && \
mkdir -p /usr/share/doc/zabbix-server-postgresql && \
mkdir -p ${ZABBIX_CONF_DIR} \
${ZABBIX_USER_HOME_DIR} \
${ZABBIX_USER_HOME_DIR}/dbscripts \
${ZABBIX_USER_HOME_DIR}/enc \
${ZABBIX_USER_HOME_DIR}/enc_internal \
${ZABBIX_USER_HOME_DIR}/export \
${ZABBIX_USER_HOME_DIR}/mibs \
${ZABBIX_USER_HOME_DIR}/modules \
${ZABBIX_USER_HOME_DIR}/snmptraps \
${ZABBIX_USER_HOME_DIR}/ssh_keys \
${ZABBIX_USER_HOME_DIR}/ssl \
${ZABBIX_USER_HOME_DIR}/ssl/certs \
${ZABBIX_USER_HOME_DIR}/ssl/keys \
${ZABBIX_USER_HOME_DIR}/ssl/ssl_ca \
/usr/lib/zabbix/alertscripts \
/usr/lib/zabbix/externalscripts \
/usr/share/doc/zabbix-server-postgresql && \
chown --quiet -R zabbix:root ${ZABBIX_CONF_DIR}/zabbix_server_modules.conf ${ZABBIX_USER_HOME_DIR} && \
chown --quiet zabbix:root ${ZABBIX_CONF_DIR}/ && \
chgrp -R 0 ${ZABBIX_CONF_DIR}/zabbix_server_modules.conf ${ZABBIX_USER_HOME_DIR} && \

View file

@ -1,4 +1,4 @@
# syntax=docker/dockerfile:1
# syntax=docker/dockerfile:1.6
ARG OS_BASE_IMAGE=alpine:3.23
FROM ${OS_BASE_IMAGE}
@ -7,13 +7,14 @@ ARG ZBX_VERSION=${MAJOR_VERSION}.8
ARG ZBX_SOURCES=https://git.zabbix.com/scm/zbx/zabbix.git
ENV TERM=xterm \
ZBX_VERSION=${ZBX_VERSION} ZBX_SOURCES=${ZBX_SOURCES} \
ZBX_VERSION=${ZBX_VERSION} \
ZBX_SOURCES=${ZBX_SOURCES} \
MIBDIRS=/usr/share/snmp/mibs:/var/lib/zabbix/mibs MIBS=+ALL \
ZBX_SNMP_TRAP_DATE_FORMAT=+%Y-%m-%dT%T%z ZBX_SNMP_TRAP_FORMAT="\n" \
ZBX_SNMP_TRAP_USE_DNS=false \
ZABBIX_USER_HOME_DIR="/var/lib/zabbix"
ZABBIX_USER_HOME_DIR=/var/lib/zabbix
ENV SNMP_PERSISTENT_DIR="${ZABBIX_USER_HOME_DIR}/snmptrapd_config"
ENV SNMP_PERSISTENT_DIR=${ZABBIX_USER_HOME_DIR}/snmptrapd_config
LABEL org.opencontainers.image.authors="Alexey Pustovalov <alexey.pustovalov@zabbix.com>" \
org.opencontainers.image.description="Zabbix SNMP traps receiver" \
@ -26,6 +27,10 @@ LABEL org.opencontainers.image.authors="Alexey Pustovalov <alexey.pustovalov@zab
STOPSIGNAL SIGTERM
COPY conf/etc/logrotate.d/zabbix_snmptraps /etc/logrotate.d/
COPY conf/etc/snmp/snmptrapd.conf /etc/snmp/
COPY conf/usr/sbin/zabbix_trap_handler.sh conf/usr/sbin/snmptrapd_runner.sh /usr/sbin/
RUN set -eux && \
INSTALL_PKGS="bash \
tzdata \
@ -47,10 +52,10 @@ RUN set -eux && \
--shell /sbin/nologin \
--home ${ZABBIX_USER_HOME_DIR} \
zabbix && \
mkdir -p ${ZABBIX_USER_HOME_DIR} && \
mkdir -p ${ZABBIX_USER_HOME_DIR}/snmptraps && \
mkdir -p ${ZABBIX_USER_HOME_DIR}/mibs && \
mkdir -p ${SNMP_PERSISTENT_DIR} && \
mkdir -p ${ZABBIX_USER_HOME_DIR} \
${ZABBIX_USER_HOME_DIR}/snmptraps \
${ZABBIX_USER_HOME_DIR}/mibs \
${SNMP_PERSISTENT_DIR} && \
chown --quiet -R zabbix:root /etc/snmp/ ${ZABBIX_USER_HOME_DIR}/ /var/tmp/ /var/run/ && \
chgrp -R 0 /etc/snmp/ ${ZABBIX_USER_HOME_DIR}/ /var/tmp/ /var/run/ && \
chmod -R g=u /etc/snmp/ ${ZABBIX_USER_HOME_DIR}/ /var/tmp/ /var/run/
@ -61,11 +66,6 @@ WORKDIR ${ZABBIX_USER_HOME_DIR}/snmptraps/
VOLUME ["${ZABBIX_USER_HOME_DIR}/snmptraps", "${SNMP_PERSISTENT_DIR}"]
COPY ["conf/etc/logrotate.d/zabbix_snmptraps", "/etc/logrotate.d/"]
COPY ["conf/etc/snmp/snmptrapd.conf", "/etc/snmp/"]
COPY ["conf/usr/sbin/zabbix_trap_handler.sh", "/usr/sbin/"]
COPY ["conf/usr/sbin/snmptrapd_runner.sh", "/usr/sbin/"]
USER 1997
CMD ["/usr/sbin/snmptrapd_runner.sh"]

View file

@ -1,10 +1,21 @@
# syntax=docker/dockerfile:1
# syntax=docker/dockerfile:1.6
ARG OS_BASE_IMAGE=alpine:3.23
ARG MAJOR_VERSION=7.4
ARG ZBX_VERSION=${MAJOR_VERSION}.8
ARG BUILD_BASE_IMAGE=zabbix-build-mysql:alpine-${ZBX_VERSION}
FROM ${BUILD_BASE_IMAGE} AS builder
FROM builder AS clean_builder
RUN set -eux && \
ls -lah "/tmp/zabbix-${ZBX_VERSION}/ui/tests" && \
rm -rf \
"/tmp/zabbix-${ZBX_VERSION}/ui/tests" \
"/tmp/zabbix-${ZBX_VERSION}/ui/conf/zabbix.conf.php" \
"/tmp/zabbix-${ZBX_VERSION}/ui/conf/zabbix.conf.php.example" \
"/tmp/zabbix-${ZBX_VERSION}/ui/conf/maintenance.inc.php" && \
find /tmp/zabbix-${ZBX_VERSION}/ui/locale -name '*.po' -delete && \
find /tmp/zabbix-${ZBX_VERSION}/ui/locale -name '*.sh' -delete
FROM ${OS_BASE_IMAGE}
@ -13,10 +24,11 @@ ARG ZBX_VERSION
ARG ZBX_SOURCES=https://git.zabbix.com/scm/zbx/zabbix.git
ENV TERM=xterm \
ZBX_VERSION=${ZBX_VERSION} ZBX_SOURCES=${ZBX_SOURCES} \
ZABBIX_CONF_DIR="/etc/zabbix" \
ZABBIX_USER_HOME_DIR="/var/lib/zabbix" \
ZABBIX_WWW_ROOT="/usr/share/zabbix"
ZBX_VERSION=${ZBX_VERSION} \
ZBX_SOURCES=${ZBX_SOURCES} \
ZABBIX_CONF_DIR=/etc/zabbix \
ZABBIX_USER_HOME_DIR=/var/lib/zabbix \
ZABBIX_WWW_ROOT=/usr/share/zabbix
LABEL org.opencontainers.image.authors="Alexey Pustovalov <alexey.pustovalov@zabbix.com>" \
org.opencontainers.image.description="Zabbix web-interface based on Apache2 web server with MySQL database support" \
@ -30,8 +42,8 @@ LABEL org.opencontainers.image.authors="Alexey Pustovalov <alexey.pustovalov@zab
STOPSIGNAL SIGTERM
COPY --from=builder ["/tmp/zabbix-${ZBX_VERSION}/ui", "${ZABBIX_WWW_ROOT}"]
COPY ["conf/etc/", "/etc/"]
COPY --from=clean_builder /tmp/zabbix-${ZBX_VERSION}/ui ${ZABBIX_WWW_ROOT}
COPY conf/etc/ /etc/
RUN set -eux && \
INSTALL_PKGS="bash \
@ -39,6 +51,7 @@ RUN set -eux && \
curl \
mariadb-client \
mariadb-connector-c \
apache2 \
apache2-proxy \
php84-bcmath \
php84-ctype \
@ -80,28 +93,23 @@ RUN set -eux && \
--shell /sbin/nologin \
--home ${ZABBIX_USER_HOME_DIR} \
zabbix && \
mkdir -p ${ZABBIX_CONF_DIR} && \
mkdir -p ${ZABBIX_CONF_DIR}/web && \
mkdir -p ${ZABBIX_CONF_DIR}/web/certs && \
mkdir -p ${ZABBIX_USER_HOME_DIR}/enc && \
mkdir -p ${ZABBIX_USER_HOME_DIR}/enc_internal && \
rm -f "/etc/apache2/conf.d/default.conf" && \
rm -f "/etc/apache2/conf.d/ssl.conf" && \
rm -f "/etc/apache2/conf.d/info.conf" && \
rm -f "/etc/apache2/conf.d/mpm.conf" && \
rm -f "/etc/apache2/conf.d/proxy.conf" && \
rm -f "/etc/apache2/conf.d/languages.conf" && \
rm -f "/etc/apache2/conf.d/userdir.conf" && \
mkdir -p /var/lib/php/session && \
rm -rf /etc/php84/php-fpm.d/www.conf && \
rm -rf "/var/run/apache2/" && \
cd ${ZABBIX_WWW_ROOT}/ && \
rm -f conf/zabbix.conf.php conf/maintenance.inc.php conf/zabbix.conf.php.example && \
rm -rf tests && \
find ${ZABBIX_WWW_ROOT}/locale -name '*.po' | xargs rm -f && \
find ${ZABBIX_WWW_ROOT}/locale -name '*.sh' | xargs rm -f && \
ln -s "${ZABBIX_CONF_DIR}/web/zabbix.conf.php" "${ZABBIX_WWW_ROOT}/conf/zabbix.conf.php" && \
ln -s "${ZABBIX_CONF_DIR}/web/maintenance.inc.php" "${ZABBIX_WWW_ROOT}/conf/maintenance.inc.php" && \
mkdir -p ${ZABBIX_CONF_DIR} \
${ZABBIX_CONF_DIR}/web \
${ZABBIX_CONF_DIR}/web/certs \
${ZABBIX_USER_HOME_DIR}/enc \
${ZABBIX_USER_HOME_DIR}/enc_internal \
/var/lib/php/session && \
rm -rf /etc/apache2/conf.d/default.conf \
/etc/apache2/conf.d/ssl.conf \
/etc/apache2/conf.d/info.conf \
/etc/apache2/conf.d/mpm.conf \
/etc/apache2/conf.d/proxy.conf \
/etc/apache2/conf.d/languages.conf \
/etc/apache2/conf.d/userdir.conf \
/etc/php84/php-fpm.d/www.conf \
/var/run/apache2/ && \
ln -sf "${ZABBIX_CONF_DIR}/web/zabbix.conf.php" "${ZABBIX_WWW_ROOT}/conf/zabbix.conf.php" && \
ln -sf "${ZABBIX_CONF_DIR}/web/maintenance.inc.php" "${ZABBIX_WWW_ROOT}/conf/maintenance.inc.php" && \
chown --quiet -R zabbix:root ${ZABBIX_CONF_DIR}/ ${ZABBIX_WWW_ROOT}/include/defines.inc.php ${ZABBIX_WWW_ROOT}/modules/ && \
chgrp -R 0 ${ZABBIX_CONF_DIR}/ ${ZABBIX_WWW_ROOT}/include/defines.inc.php ${ZABBIX_WWW_ROOT}/modules/ && \
chmod -R g=u ${ZABBIX_CONF_DIR}/ ${ZABBIX_WWW_ROOT}/include/defines.inc.php ${ZABBIX_WWW_ROOT}/modules/ && \

View file

@ -1,10 +1,21 @@
# syntax=docker/dockerfile:1
# syntax=docker/dockerfile:1.6
ARG OS_BASE_IMAGE=alpine:3.23
ARG MAJOR_VERSION=7.4
ARG ZBX_VERSION=${MAJOR_VERSION}.8
ARG BUILD_BASE_IMAGE=zabbix-build-pgsql:alpine-${ZBX_VERSION}
FROM ${BUILD_BASE_IMAGE} AS builder
FROM builder AS clean_builder
RUN set -eux && \
ls -lah "/tmp/zabbix-${ZBX_VERSION}/ui/tests" && \
rm -rf \
"/tmp/zabbix-${ZBX_VERSION}/ui/tests" \
"/tmp/zabbix-${ZBX_VERSION}/ui/conf/zabbix.conf.php" \
"/tmp/zabbix-${ZBX_VERSION}/ui/conf/zabbix.conf.php.example" \
"/tmp/zabbix-${ZBX_VERSION}/ui/conf/maintenance.inc.php" && \
find /tmp/zabbix-${ZBX_VERSION}/ui/locale -name '*.po' -delete && \
find /tmp/zabbix-${ZBX_VERSION}/ui/locale -name '*.sh' -delete
FROM ${OS_BASE_IMAGE}
@ -13,10 +24,11 @@ ARG ZBX_VERSION
ARG ZBX_SOURCES=https://git.zabbix.com/scm/zbx/zabbix.git
ENV TERM=xterm \
ZBX_VERSION=${ZBX_VERSION} ZBX_SOURCES=${ZBX_SOURCES} \
ZABBIX_CONF_DIR="/etc/zabbix" \
ZABBIX_USER_HOME_DIR="/var/lib/zabbix" \
ZABBIX_WWW_ROOT="/usr/share/zabbix"
ZBX_VERSION=${ZBX_VERSION} \
ZBX_SOURCES=${ZBX_SOURCES} \
ZABBIX_CONF_DIR=/etc/zabbix \
ZABBIX_USER_HOME_DIR=/var/lib/zabbix \
ZABBIX_WWW_ROOT=/usr/share/zabbix
LABEL org.opencontainers.image.authors="Alexey Pustovalov <alexey.pustovalov@zabbix.com>" \
org.opencontainers.image.description="Zabbix web-interface based on Apache2 web server with PostgreSQL database support" \
@ -30,13 +42,14 @@ LABEL org.opencontainers.image.authors="Alexey Pustovalov <alexey.pustovalov@zab
STOPSIGNAL SIGTERM
COPY --from=builder ["/tmp/zabbix-${ZBX_VERSION}/ui", "${ZABBIX_WWW_ROOT}"]
COPY ["conf/etc/", "/etc/"]
COPY --from=clean_builder /tmp/zabbix-${ZBX_VERSION}/ui ${ZABBIX_WWW_ROOT}
COPY conf/etc/ /etc/
RUN set -eux && \
INSTALL_PKGS="bash \
tzdata \
curl \
apache2 \
apache2-proxy \
php84-bcmath \
php84-ctype \
@ -79,28 +92,23 @@ RUN set -eux && \
--shell /sbin/nologin \
--home ${ZABBIX_USER_HOME_DIR} \
zabbix && \
mkdir -p ${ZABBIX_CONF_DIR} && \
mkdir -p ${ZABBIX_CONF_DIR}/web && \
mkdir -p ${ZABBIX_CONF_DIR}/web/certs && \
mkdir -p ${ZABBIX_USER_HOME_DIR}/enc && \
mkdir -p ${ZABBIX_USER_HOME_DIR}/enc_internal && \
rm -f "/etc/apache2/conf.d/default.conf" && \
rm -f "/etc/apache2/conf.d/ssl.conf" && \
rm -f "/etc/apache2/conf.d/info.conf" && \
rm -f "/etc/apache2/conf.d/mpm.conf" && \
rm -f "/etc/apache2/conf.d/proxy.conf" && \
rm -f "/etc/apache2/conf.d/languages.conf" && \
rm -f "/etc/apache2/conf.d/userdir.conf" && \
mkdir -p /var/lib/php/session && \
rm -rf /etc/php84/php-fpm.d/www.conf && \
rm -rf "/var/run/apache2/" && \
cd ${ZABBIX_WWW_ROOT}/ && \
rm -f conf/zabbix.conf.php conf/maintenance.inc.php conf/zabbix.conf.php.example && \
rm -rf tests && \
find ${ZABBIX_WWW_ROOT}/locale -name '*.po' | xargs rm -f && \
find ${ZABBIX_WWW_ROOT}/locale -name '*.sh' | xargs rm -f && \
ln -s "${ZABBIX_CONF_DIR}/web/zabbix.conf.php" "${ZABBIX_WWW_ROOT}/conf/zabbix.conf.php" && \
ln -s "${ZABBIX_CONF_DIR}/web/maintenance.inc.php" "${ZABBIX_WWW_ROOT}/conf/maintenance.inc.php" && \
mkdir -p ${ZABBIX_CONF_DIR} \
${ZABBIX_CONF_DIR}/web \
${ZABBIX_CONF_DIR}/web/certs \
${ZABBIX_USER_HOME_DIR}/enc \
${ZABBIX_USER_HOME_DIR}/enc_internal \
/var/lib/php/session && \
rm -rf /etc/apache2/conf.d/default.conf \
/etc/apache2/conf.d/ssl.conf \
/etc/apache2/conf.d/info.conf \
/etc/apache2/conf.d/mpm.conf \
/etc/apache2/conf.d/proxy.conf \
/etc/apache2/conf.d/languages.conf \
/etc/apache2/conf.d/userdir.conf \
/etc/php84/php-fpm.d/www.conf \
/var/run/apache2/ && \
ln -sf "${ZABBIX_CONF_DIR}/web/zabbix.conf.php" "${ZABBIX_WWW_ROOT}/conf/zabbix.conf.php" && \
ln -sf "${ZABBIX_CONF_DIR}/web/maintenance.inc.php" "${ZABBIX_WWW_ROOT}/conf/maintenance.inc.php" && \
chown --quiet -R zabbix:root ${ZABBIX_CONF_DIR}/ ${ZABBIX_WWW_ROOT}/include/defines.inc.php ${ZABBIX_WWW_ROOT}/modules/ && \
chgrp -R 0 ${ZABBIX_CONF_DIR}/ ${ZABBIX_WWW_ROOT}/include/defines.inc.php ${ZABBIX_WWW_ROOT}/modules/ && \
chmod -R g=u ${ZABBIX_CONF_DIR}/ ${ZABBIX_WWW_ROOT}/include/defines.inc.php ${ZABBIX_WWW_ROOT}/modules/ && \

View file

@ -1,10 +1,21 @@
# syntax=docker/dockerfile:1
# syntax=docker/dockerfile:1.6
ARG OS_BASE_IMAGE=alpine:3.23
ARG MAJOR_VERSION=7.4
ARG ZBX_VERSION=${MAJOR_VERSION}.8
ARG BUILD_BASE_IMAGE=zabbix-build-mysql:alpine-${ZBX_VERSION}
FROM ${BUILD_BASE_IMAGE} AS builder
FROM builder AS clean_builder
RUN set -eux && \
ls -lah "/tmp/zabbix-${ZBX_VERSION}/ui/tests" && \
rm -rf \
"/tmp/zabbix-${ZBX_VERSION}/ui/tests" \
"/tmp/zabbix-${ZBX_VERSION}/ui/conf/zabbix.conf.php" \
"/tmp/zabbix-${ZBX_VERSION}/ui/conf/zabbix.conf.php.example" \
"/tmp/zabbix-${ZBX_VERSION}/ui/conf/maintenance.inc.php" && \
find /tmp/zabbix-${ZBX_VERSION}/ui/locale -name '*.po' -delete && \
find /tmp/zabbix-${ZBX_VERSION}/ui/locale -name '*.sh' -delete
FROM ${OS_BASE_IMAGE}
@ -13,10 +24,11 @@ ARG ZBX_VERSION
ARG ZBX_SOURCES=https://git.zabbix.com/scm/zbx/zabbix.git
ENV TERM=xterm \
ZBX_VERSION=${ZBX_VERSION} ZBX_SOURCES=${ZBX_SOURCES} \
ZABBIX_CONF_DIR="/etc/zabbix" \
ZABBIX_USER_HOME_DIR="/var/lib/zabbix" \
ZABBIX_WWW_ROOT="/usr/share/zabbix"
ZBX_VERSION=${ZBX_VERSION} \
ZBX_SOURCES=${ZBX_SOURCES} \
ZABBIX_CONF_DIR=/etc/zabbix \
ZABBIX_USER_HOME_DIR=/var/lib/zabbix \
ZABBIX_WWW_ROOT=/usr/share/zabbix
LABEL org.opencontainers.image.authors="Alexey Pustovalov <alexey.pustovalov@zabbix.com>" \
org.opencontainers.image.description="Zabbix web-interface based on Nginx web server with MySQL database support" \
@ -30,8 +42,8 @@ LABEL org.opencontainers.image.authors="Alexey Pustovalov <alexey.pustovalov@zab
STOPSIGNAL SIGTERM
COPY --from=builder ["/tmp/zabbix-${ZBX_VERSION}/ui", "${ZABBIX_WWW_ROOT}"]
COPY ["conf/etc/", "/etc/"]
COPY --from=clean_builder /tmp/zabbix-${ZBX_VERSION}/ui ${ZABBIX_WWW_ROOT}/
COPY conf/etc/ /etc/
RUN set -eux && \
INSTALL_PKGS="bash \
@ -62,11 +74,6 @@ RUN set -eux && \
--no-cache \
--clean-protected \
${INSTALL_PKGS} && \
apk add \
--clean-protected \
--no-cache \
--no-scripts \
apache2-ssl && \
addgroup \
--system \
--gid 1995 \
@ -80,23 +87,18 @@ RUN set -eux && \
--shell /sbin/nologin \
--home ${ZABBIX_USER_HOME_DIR} \
zabbix && \
mkdir -p ${ZABBIX_CONF_DIR} && \
mkdir -p ${ZABBIX_CONF_DIR}/web && \
mkdir -p ${ZABBIX_CONF_DIR}/web/certs && \
mkdir -p ${ZABBIX_USER_HOME_DIR}/enc && \
mkdir -p ${ZABBIX_USER_HOME_DIR}/enc_internal && \
mkdir -p /var/lib/php/session && \
rm -rf /etc/php84/php-fpm.d/www.conf && \
rm -f /etc/nginx/http.d/*.conf && \
mkdir -p ${ZABBIX_CONF_DIR} \
${ZABBIX_CONF_DIR}/web \
${ZABBIX_CONF_DIR}/web/certs \
${ZABBIX_USER_HOME_DIR}/enc \
${ZABBIX_USER_HOME_DIR}/enc_internal \
/var/lib/php/session && \
rm -rf /etc/php84/php-fpm.d/www.conf \
/etc/nginx/http.d/*.conf && \
ln -sf /dev/stdout /var/log/nginx/access.log && \
ln -sf /dev/stderr /var/log/nginx/error.log && \
cd ${ZABBIX_WWW_ROOT}/ && \
rm -f conf/zabbix.conf.php conf/maintenance.inc.php conf/zabbix.conf.php.example && \
rm -rf tests && \
find ${ZABBIX_WWW_ROOT}/locale -name '*.po' | xargs rm -f && \
find ${ZABBIX_WWW_ROOT}/locale -name '*.sh' | xargs rm -f && \
ln -s "${ZABBIX_CONF_DIR}/web/zabbix.conf.php" "${ZABBIX_WWW_ROOT}/conf/zabbix.conf.php" && \
ln -s "${ZABBIX_CONF_DIR}/web/maintenance.inc.php" "${ZABBIX_WWW_ROOT}/conf/maintenance.inc.php" && \
ln -sf "${ZABBIX_CONF_DIR}/web/zabbix.conf.php" "${ZABBIX_WWW_ROOT}/conf/zabbix.conf.php" && \
ln -sf "${ZABBIX_CONF_DIR}/web/maintenance.inc.php" "${ZABBIX_WWW_ROOT}/conf/maintenance.inc.php" && \
chown --quiet -R zabbix:root ${ZABBIX_CONF_DIR}/ ${ZABBIX_WWW_ROOT}/include/defines.inc.php ${ZABBIX_WWW_ROOT}/modules/ && \
chgrp -R 0 ${ZABBIX_CONF_DIR}/ ${ZABBIX_WWW_ROOT}/include/defines.inc.php ${ZABBIX_WWW_ROOT}/modules/ && \
chmod -R g=u ${ZABBIX_CONF_DIR}/ ${ZABBIX_WWW_ROOT}/include/defines.inc.php ${ZABBIX_WWW_ROOT}/modules/ && \
@ -114,7 +116,7 @@ EXPOSE 8080/tcp 8443/tcp
WORKDIR ${ZABBIX_WWW_ROOT}
COPY ["docker-entrypoint.sh", "/usr/bin/"]
COPY docker-entrypoint.sh /usr/bin/
USER 1997

View file

@ -5,6 +5,17 @@ ARG ZBX_VERSION=${MAJOR_VERSION}.8
ARG BUILD_BASE_IMAGE=zabbix-build-pgsql:alpine-${ZBX_VERSION}
FROM ${BUILD_BASE_IMAGE} AS builder
FROM builder AS clean_builder
RUN set -eux && \
ls -lah "/tmp/zabbix-${ZBX_VERSION}/ui/tests" && \
rm -rf \
"/tmp/zabbix-${ZBX_VERSION}/ui/tests" \
"/tmp/zabbix-${ZBX_VERSION}/ui/conf/zabbix.conf.php" \
"/tmp/zabbix-${ZBX_VERSION}/ui/conf/zabbix.conf.php.example" \
"/tmp/zabbix-${ZBX_VERSION}/ui/conf/maintenance.inc.php" && \
find /tmp/zabbix-${ZBX_VERSION}/ui/locale -name '*.po' -delete && \
find /tmp/zabbix-${ZBX_VERSION}/ui/locale -name '*.sh' -delete
FROM ${OS_BASE_IMAGE}
@ -13,10 +24,11 @@ ARG ZBX_VERSION
ARG ZBX_SOURCES=https://git.zabbix.com/scm/zbx/zabbix.git
ENV TERM=xterm \
ZBX_VERSION=${ZBX_VERSION} ZBX_SOURCES=${ZBX_SOURCES} \
ZABBIX_CONF_DIR="/etc/zabbix" \
ZABBIX_USER_HOME_DIR="/var/lib/zabbix" \
ZABBIX_WWW_ROOT="/usr/share/zabbix"
ZBX_VERSION=${ZBX_VERSION} \
ZBX_SOURCES=${ZBX_SOURCES} \
ZABBIX_CONF_DIR=/etc/zabbix \
ZABBIX_USER_HOME_DIR=/var/lib/zabbix \
ZABBIX_WWW_ROOT=/usr/share/zabbix
LABEL org.opencontainers.image.authors="Alexey Pustovalov <alexey.pustovalov@zabbix.com>" \
org.opencontainers.image.description="Zabbix web-interface based on Nginx web server with PostgreSQL database support" \
@ -30,8 +42,8 @@ LABEL org.opencontainers.image.authors="Alexey Pustovalov <alexey.pustovalov@zab
STOPSIGNAL SIGTERM
COPY --from=builder ["/tmp/zabbix-${ZBX_VERSION}/ui", "${ZABBIX_WWW_ROOT}"]
COPY ["conf/etc/", "/etc/"]
COPY --from=clean_builder /tmp/zabbix-${ZBX_VERSION}/ui ${ZABBIX_WWW_ROOT}/
COPY conf/etc/ /etc/
RUN set -eux && \
INSTALL_PKGS="bash \
@ -61,11 +73,6 @@ RUN set -eux && \
--no-cache \
--clean-protected \
${INSTALL_PKGS} && \
apk add \
--clean-protected \
--no-cache \
--no-scripts \
apache2-ssl && \
addgroup \
--system \
--gid 1995 \
@ -79,23 +86,18 @@ RUN set -eux && \
--shell /sbin/nologin \
--home ${ZABBIX_USER_HOME_DIR} \
zabbix && \
mkdir -p ${ZABBIX_CONF_DIR} && \
mkdir -p ${ZABBIX_CONF_DIR}/web && \
mkdir -p ${ZABBIX_CONF_DIR}/web/certs && \
mkdir -p ${ZABBIX_USER_HOME_DIR}/enc && \
mkdir -p ${ZABBIX_USER_HOME_DIR}/enc_internal && \
mkdir -p /var/lib/php/session && \
rm -rf /etc/php84/php-fpm.d/www.conf && \
rm -f /etc/nginx/http.d/*.conf && \
mkdir -p ${ZABBIX_CONF_DIR} \
${ZABBIX_CONF_DIR}/web \
${ZABBIX_CONF_DIR}/web/certs \
${ZABBIX_USER_HOME_DIR}/enc \
${ZABBIX_USER_HOME_DIR}/enc_internal \
/var/lib/php/session && \
rm -rf /etc/php84/php-fpm.d/www.conf \
/etc/nginx/http.d/*.conf && \
ln -sf /dev/stdout /var/log/nginx/access.log && \
ln -sf /dev/stderr /var/log/nginx/error.log && \
cd ${ZABBIX_WWW_ROOT}/ && \
rm -f conf/zabbix.conf.php conf/maintenance.inc.php conf/zabbix.conf.php.example && \
rm -rf tests && \
find ${ZABBIX_WWW_ROOT}/locale -name '*.po' | xargs rm -f && \
find ${ZABBIX_WWW_ROOT}/locale -name '*.sh' | xargs rm -f && \
ln -s "${ZABBIX_CONF_DIR}/web/zabbix.conf.php" "${ZABBIX_WWW_ROOT}/conf/zabbix.conf.php" && \
ln -s "${ZABBIX_CONF_DIR}/web/maintenance.inc.php" "${ZABBIX_WWW_ROOT}/conf/maintenance.inc.php" && \
ln -sf "${ZABBIX_CONF_DIR}/web/zabbix.conf.php" "${ZABBIX_WWW_ROOT}/conf/zabbix.conf.php" && \
ln -sf "${ZABBIX_CONF_DIR}/web/maintenance.inc.php" "${ZABBIX_WWW_ROOT}/conf/maintenance.inc.php" && \
chown --quiet -R zabbix:root ${ZABBIX_CONF_DIR}/ ${ZABBIX_WWW_ROOT}/include/defines.inc.php ${ZABBIX_WWW_ROOT}/modules/ && \
chgrp -R 0 ${ZABBIX_CONF_DIR}/ ${ZABBIX_WWW_ROOT}/include/defines.inc.php ${ZABBIX_WWW_ROOT}/modules/ && \
chmod -R g=u ${ZABBIX_CONF_DIR}/ ${ZABBIX_WWW_ROOT}/include/defines.inc.php ${ZABBIX_WWW_ROOT}/modules/ && \
@ -113,7 +115,7 @@ EXPOSE 8080/tcp 8443/tcp
WORKDIR ${ZABBIX_WWW_ROOT}
COPY ["docker-entrypoint.sh", "/usr/bin/"]
COPY docker-entrypoint.sh /usr/bin/
USER 1997

View file

@ -1,4 +1,4 @@
# syntax=docker/dockerfile:1
# syntax=docker/dockerfile:1.6
ARG OS_BASE_IMAGE=alpine:3.23
ARG MAJOR_VERSION=7.4
ARG ZBX_VERSION=${MAJOR_VERSION}.8
@ -13,9 +13,10 @@ ARG ZBX_VERSION
ARG ZBX_SOURCES=https://git.zabbix.com/scm/zbx/zabbix.git
ENV TERM=xterm \
ZBX_VERSION=${ZBX_VERSION} ZBX_SOURCES=${ZBX_SOURCES} \
ZABBIX_USER_HOME_DIR="/var/lib/zabbix" \
ZABBIX_CONF_DIR="/etc/zabbix"
ZBX_VERSION=${ZBX_VERSION} \
ZBX_SOURCES=${ZBX_SOURCES} \
ZABBIX_USER_HOME_DIR=/var/lib/zabbix \
ZABBIX_CONF_DIR=/etc/zabbix
LABEL org.opencontainers.image.authors="Alexey Pustovalov <alexey.pustovalov@zabbix.com>" \
org.opencontainers.image.description="Zabbix web service for performing various tasks using headless web browser" \
@ -29,12 +30,13 @@ LABEL org.opencontainers.image.authors="Alexey Pustovalov <alexey.pustovalov@zab
STOPSIGNAL SIGTERM
COPY --from=builder ["/tmp/zabbix-${ZBX_VERSION}-output/web_service/sbin/zabbix_web_service", "/usr/sbin/zabbix_web_service"]
COPY --from=builder ["/tmp/zabbix-${ZBX_VERSION}-output/web_service/conf/", "${ZABBIX_CONF_DIR}/"]
COPY --from=builder /tmp/zabbix-${ZBX_VERSION}-output/web_service/sbin/zabbix_web_service /usr/sbin/zabbix_web_service
COPY --from=builder /tmp/zabbix-${ZBX_VERSION}-output/web_service/conf/ ${ZABBIX_CONF_DIR}/
RUN set -eux && \
INSTALL_PKGS="bash \
chromium" && \
chromium \
ca-certificates" && \
apk add \
--no-cache \
--clean-protected \
@ -52,10 +54,10 @@ RUN set -eux && \
--shell /sbin/nologin \
--home ${ZABBIX_USER_HOME_DIR} \
zabbix && \
mkdir -p ${ZABBIX_CONF_DIR} && \
mkdir -p ${ZABBIX_USER_HOME_DIR} && \
mkdir -p ${ZABBIX_USER_HOME_DIR}/enc && \
mkdir -p ${ZABBIX_USER_HOME_DIR}/enc_internal && \
mkdir -p ${ZABBIX_CONF_DIR} \
${ZABBIX_USER_HOME_DIR} \
${ZABBIX_USER_HOME_DIR}/enc \
${ZABBIX_USER_HOME_DIR}/enc_internal && \
chown --quiet -R zabbix:root ${ZABBIX_USER_HOME_DIR}/ && \
chgrp -R 0 ${ZABBIX_USER_HOME_DIR}/ && \
chmod -R g=u ${ZABBIX_USER_HOME_DIR}/ && \