ARG BUILD_FROM FROM ${BUILD_FROM} # Build arguments ARG BUILD_ARCH ARG BUILD_DATE ARG BUILD_DESCRIPTION ARG BUILD_NAME ARG BUILD_REF ARG BUILD_REPOSITORY ARG BUILD_VERSION ARG TELEGRAF_VERSION ARG HAPROXY_BRANCH ARG HAPROXY_VERSION ARG HAPROXY_SHA256 # Environment variables ENV \ CARGO_NET_GIT_FETCH_WITH_CLI=true \ HOME="/root" \ LANG="C.UTF-8" \ PIP_DISABLE_PIP_VERSION_CHECK=1 \ PIP_FIND_LINKS=https://wheels.home-assistant.io/musllinux/ \ PIP_NO_CACHE_DIR=1 \ PIP_PREFER_BINARY=1 \ PS1="$(whoami)@$(hostname):$(pwd)$ " \ PYTHONDONTWRITEBYTECODE=1 \ PYTHONUNBUFFERED=1 \ YARN_HTTP_TIMEOUT=1000000 \ TERM="xterm-256color" # Copy root filesystem COPY rootfs / # Set shell SHELL ["/bin/ash", "-o", "pipefail", "-c"] USER root RUN set -eux; \ addgroup --gid 99 --system haproxy; \ adduser \ --disabled-password \ --home /var/lib/haproxy \ --ingroup haproxy \ --no-create-home \ --system \ --uid 99 \ haproxy \ ; \ mkdir /var/lib/haproxy; \ chown haproxy:haproxy /var/lib/haproxy ENV HAPROXY_VERSION ${HAPROXY_VERSION} ENV HAPROXY_URL https://www.haproxy.org/download/${HAPROXY_BRANCH}/src/haproxy-${HAPROXY_VERSION}.tar.gz ENV HAPROXY_SHA256 ${HAPROXY_SHA256} RUN set -eux; \ \ apk add --no-cache --virtual .build-deps \ gcc \ libc-dev \ linux-headers \ lua5.3-dev \ make \ openssl \ openssl-dev \ pcre2-dev \ readline-dev \ tar \ ; \ \ wget -O haproxy.tar.gz "$HAPROXY_URL"; \ echo "$HAPROXY_SHA256 *haproxy.tar.gz" | sha256sum -c; \ mkdir -p /usr/src/haproxy; \ tar -xzf haproxy.tar.gz -C /usr/src/haproxy --strip-components=1; \ rm haproxy.tar.gz; \ \ makeOpts=' \ TARGET=linux-musl \ USE_GETADDRINFO=1 \ USE_LUA=1 LUA_INC=/usr/include/lua5.3 LUA_LIB=/usr/lib/lua5.3 \ USE_OPENSSL=1 \ USE_PCRE2=1 USE_PCRE2_JIT=1 \ USE_PROMEX=1 \ \ EXTRA_OBJS=" \ " \ '; \ \ nproc="$(getconf _NPROCESSORS_ONLN)"; \ eval "make -C /usr/src/haproxy -j '$nproc' all $makeOpts"; \ eval "make -C /usr/src/haproxy install-bin $makeOpts"; \ \ mkdir -p /usr/local/etc/haproxy; \ cp -R /usr/src/haproxy/examples/errorfiles /usr/local/etc/haproxy/errors; \ rm -rf /usr/src/haproxy; \ \ runDeps="$( \ scanelf --needed --nobanner --format '%n#p' --recursive /usr/local \ | tr ',' '\n' \ | sort -u \ | awk 'system("[ -e /usr/local/lib/" $1 " ]") == 0 { next } { print "so:" $1 }' \ )"; \ apk add --no-network --virtual .haproxy-rundeps $runDeps; \ apk del --no-network .build-deps; \ \ haproxy -v STOPSIGNAL SIGUSR1 ENV ENABLE_ALLOW_RESTARTS=0 \ ENABLE_AUTH=0 \ ENABLE_BUILD=0 \ ENABLE_COMMIT=0 \ ENABLE_CONFIGS=0 \ ENABLE_CONTAINERS=0 \ ENABLE_DISTRIBUTION=0 \ ENABLE_EVENTS=1 \ ENABLE_EXEC=0 \ ENABLE_GRPC=0 \ ENABLE_IMAGES=0 \ ENABLE_INFO=0 \ ENABLE_LOG_LEVEL=info \ ENABLE_NETWORKS=0 \ ENABLE_NODES=0 \ ENABLE_PING=1 \ ENABLE_PLUGINS=0 \ ENABLE_POST=0 \ ENABLE_SECRETS=0 \ ENABLE_SERVICES=0 \ ENABLE_SESSION=0 \ ENABLE_SOCKET_PATH=/var/run/docker.sock \ ENABLE_SWARM=0 \ ENABLE_SYSTEM=0 \ ENABLE_TASKS=0 \ ENABLE_VERSION=1 \ ENABLE_VOLUMES=0 COPY haproxy.cfg /usr/local/etc/haproxy/haproxy.cfg EXPOSE 2375 COPY entrypoint.sh /entrypoint.sh COPY settings.sh /settings.sh ENTRYPOINT ["/entrypoint.sh"] CMD ["haproxy", "-f", "/usr/local/etc/haproxy/haproxy.cfg"] # Labels LABEL \ io.hass.name="${BUILD_NAME}" \ io.hass.description="${BUILD_DESCRIPTION}" \ io.hass.arch="${BUILD_ARCH}" \ io.hass.type="addon" \ io.hass.version=${BUILD_VERSION} \ maintainer="fbonelle" \ org.opencontainers.image.title="${BUILD_NAME}" \ org.opencontainers.image.description="${BUILD_DESCRIPTION}" \ org.opencontainers.image.vendor="fbonelle's addons" \ org.opencontainers.image.authors="fbonelle" \ org.opencontainers.image.licenses="MIT" \ org.opencontainers.image.created=${BUILD_DATE} \ org.opencontainers.image.revision=${BUILD_REF} \ org.opencontainers.image.version=${BUILD_VERSION}