В тот момент я обнаружил ту же проблему в Haproxy Dockerfile. Может быть, я чего-то не улавливаю. В любом случае простое решение:
Чтобы создать простой контекст докера для отправки:
mkdir haproxy && cd haproxy
Создать Докерфайл следующее:
ОТ debian: яблочко-тонкий
# примерно, https://salsa.debian.org/haproxy-team/haproxy/-/blob/732b97ae286906dea19ab5744cf9cf97c364ac1d/debian/haproxy.postinst#L5-6
ВЫПОЛНИТЬ установить -eux; \
groupadd --gid 99 --system haproxy; \
пользовательдобавить \
--gid прокси \
--home-dir /var/lib/haproxy \
--no-создать-дом \
--система \
--uid 99 \
хапрокси \
; \
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
# см. https://sources.debian.net/src/haproxy/jessie/debian/rules/ для полезной навигации по возможным аргументам "make"
ВЫПОЛНИТЬ установить -eux; \
\
saveAptMark="$(apt-mark showmanual)"; \
apt-get update && apt-get install -y --no-install-recommends \
ca-сертификаты \
gcc \
libc6-dev \
liblua5.3-dev \
libpcre2-dev \
libssl-dev\
делать \
wget \
; \
rm -rf /var/lib/apt/lists/*; \
\
wget -O haproxy.tar.gz "$HAPROXY_URL"; \
эхо "$HAPROXY_SHA256 *haproxy.tar.gz" | ша256сум -с; \
mkdir -p /usr/src/haproxy; \
tar -xzf haproxy.tar.gz -C /usr/src/haproxy --strip-components=1; \
rm haproxy.tar.gz; \
\
makeOpts=' \
ЦЕЛЬ=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)"; \
case "$dpkgArch" в \
armel) makeOpts="$makeOpts ADDLIB=-latomic" ;; \
эсак; \
\
nproc="$(nproc)"; \
eval "сделать -C /usr/src/haproxy -j '$nproc' все $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" ] || руководство по метке apt $savedAptMark; \
найти /usr/local -type f -executable -exec ldd '{}' ';' \
| awk '/=>/ { print $(NF-1) }' \
| сортировать -у \
| xargs -r dpkg-запрос --поиск \
| вырезать -d: -f1 \
| сортировать -у \
| xargs -r apt-mark руководство \
; \
apt-get purge -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false; \
\
# дымовой тест
хапрокси -v
# https://www.haproxy.org/download/1.8/doc/management.txt
# "4. Остановка и перезапуск HAProxy"
# "когда сигнал SIGTERM отправляется процессу haproxy, он немедленно завершает работу и все установленные соединения закрываются"
# "изящная остановка срабатывает, когда сигнал SIGUSR1 отправляется в процесс haproxy"
СТОП-СИГНАЛ SIGUSR1
КОПИРОВАТЬ docker-entrypoint.sh /usr/local/bin/
ТОЧКА ВХОДА ["docker-entrypoint.sh"]
ПОЛЬЗОВАТЕЛЬ
CMD ["haproxy", "-f", "/usr/local/etc/haproxy/haproxy.cfg"]
Затем создайте докер-entrypoint.sh следующее:
коснитесь docker-entrypoint.sh
и вставьте следующее содержимое:
#!/бин/ш
установить -е
# первый аргумент `-f` или `--some-option`
если [ "${1#-}" != "$1" ]; тогда
установить -- haproxy "$@"
фи
если [ "$1" = 'haproxy' ]; тогда
сдвиг # "хапрокси"
# если пользователь хочет "haproxy", добавим пару полезных флагов
# -W -- "режим master-worker" (похож на старый "haproxy-systemd-wrapper"; позволяет перезагружаться через "SIGUSR2")
# -db -- отключает фоновый режим
установить -- haproxy -W -db "$@"
фи
выполнить "$@"
После этих шагов вы можете создать рабочий образ haproxy: сборка докеров -t haproxy .