Momentan am găsit aceeași problemă în Haproxy Dockerfile. Poate că este ceva ce nu prind. Oricum o solutie simpla:
Pentru a crea un context docker simplu de trimis:
mkdir haproxy && cd haproxy
Creeaza o Dockerfile după cum urmează:
DE LA debian:bullseye-slim
# aproximativ, https://salsa.debian.org/haproxy-team/haproxy/-/blob/732b97ae286906dea19ab5744cf9cf97c364ac1d/debian/haproxy.postinst#L5-6
RUN set -eux; \
groupadd --gid 99 --system haproxy; \
useradd\
--gid haproxy \
--home-dir /var/lib/haproxy \
--no-create-home \
--sistem \
--uid 99 \
haproxy \
; \
mkdir /var/lib/haproxy; \
chown haproxy:haproxy /var/lib/haproxy
ENV HAPROXY_VERSION 2.5.4
ENV HAPROXY_URL https://www.haproxy.org/download/2.5/src/haproxy-2.5.4.tar.gz
ENV HAPROXY_SHA256 dc4015d85c7fef811b459803b763001d809b07a9251dc1864fedb9a07b44aefb
# consultați https://sources.debian.net/src/haproxy/jessie/debian/rules/ pentru o navigare utilă a posibilelor argumente „make”
RUN set -eux; \
\
savedAptMark="$(manual de prezentare apt-mark)"; \
apt-get update && apt-get install -y --no-install-recommends \
certificate ca \
gcc \
libc6-dev \
liblua5.3-dev \
libpcre2-dev \
libssl-dev \
face \
wget \
; \
rm -rf /var/lib/apt/lists/*; \
\
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-glibc \
USE_GETADDRINFO=1 \
USE_LUA=1 LUA_INC=/usr/include/lua5.3 \
USE_OPENSSL=1 \
USE_PCRE2=1 USE_PCRE2_JIT=1 \
USE_PROMEX=1 \
\
EXTRA_OBJS=" \
"\
'; \
# https://salsa.debian.org/haproxy-team/haproxy/-/commit/53988af3d006ebcbf2c941e34121859fd6379c70
dpkgArch="$(dpkg --print-architecture)"; \
cazul „$dpkgArch” în \
armel) makeOpts="$makeOpts ADDLIB=-latomic" ;; \
esac; \
\
nproc="$(nproc)"; \
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; \
\
apt-mark auto '.*' > /dev/null; \
[ -z "$savedAptMark" ] || manualul apt-mark $savedAptMark; \
găsiți /usr/local -type f -executable -exec ldd '{}' ';' \
| awk '/=>/ { print $(NF-1) }' \
| sortează -u \
| xargs -r dpkg-query --search \
| tăiați -d: -f1 \
| sortează -u \
| xargs -r apt-mark manual \
; \
apt-get purge -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false; \
\
# test de fum
haproxy -v
# https://www.haproxy.org/download/1.8/doc/management.txt
# „4. Oprirea și repornirea HAProxy”
# „când semnalul SIGTERM este trimis către procesul haproxy, acesta se închide imediat și toate conexiunile stabilite sunt închise”
# „oprirea grațioasă este declanșată când semnalul SIGUSR1 este trimis către procesul haproxy”
SEMNAL DE OPRIRE SIGUSR1
COPIEAZĂ docker-entrypoint.sh /usr/local/bin/
ENTRYPOINT [„docker-entrypoint.sh”]
UTILIZATOR haproxy
CMD ["haproxy", "-f", "/usr/local/etc/haproxy/haproxy.cfg"]
Apoi creați docker-entrypoint.sh după cum urmează:
atingeți docker-entrypoint.sh
și lipiți următorul conținut:
#!/bin/sh
set -e
# primul argument este `-f` sau `--some-option`
if [ "${1#-}" != "$1" ]; atunci
set -- haproxy „$@”
fi
if [ "$1" = 'haproxy' ]; atunci
shift # „haproxy”
# dacă utilizatorul dorește „haproxy”, să adăugăm câteva steaguri utile
# -W -- „modul master-worker” (similar vechiului „haproxy-systemd-wrapper”; permite reîncărcarea prin „SIGUSR2”)
# -db -- dezactivează modul de fundal
set -- haproxy -W -db "$@"
fi
exec „$@”
După acești pași, vă puteți construi imaginea haproxy de lucru: docker build -t haproxy .