ในขณะนี้ฉันพบปัญหาเดียวกันใน Haproxy Dockerfile บางทีมันอาจเป็นสิ่งที่ฉันไม่จับ อย่างไรก็ตามวิธีแก้ปัญหาง่ายๆ:
วิธีสร้างบริบทนักเทียบท่าอย่างง่ายเพื่อส่ง:
mkdir แฮพร็อกซี && ซีดี แฮพร็อกซี
สร้าง ไฟล์นักเทียบท่า ดังนี้
จากเดเบียน:bullseye-slim
#คร่าวๆ https://salsa.debian.org/haproxy-team/haproxy/-/blob/732b97ae286906dea19ab5744cf9cf97c364ac1d/debian/haproxy.postinst#L5-6
ชุด RUN -eux; \
groupadd --gid 99 --ระบบ haproxy; \
เพิ่มผู้ใช้ \
--gid แฮพร็อกซี่ \
--home-dir /var/lib/haproxy \
--ไม่สร้างบ้าน \
--ระบบ \
--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" ที่เป็นไปได้
ชุด RUN -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"; \
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=' \
เป้าหมาย = ลินุกซ์-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)"; \
กรณี "$dpkgArch" ใน \
armel) makeOpts="$makeOpts ADDLIB=-latomic" ;; \
เอสแซค; \
\
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" ] || คู่มือ apt-mark $savedAptMark; \
ค้นหา /usr/local -type f -executable -exec ldd '{}' ';' \
| awk '/=>/ { พิมพ์ $(NF-1) }' \
| จัดเรียง -u \
| xargs -r dpkg-query -- ค้นหา \
| ตัด -d: -f1 \
| จัดเรียง -u \
| คู่มือ xargs -r apt-mark \
; \
apt-get purge -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false; \
\
#ทดสอบควัน
haproxy -v
# https://www.haproxy.org/download/1.8/doc/management.txt
# "4. การหยุดและรีสตาร์ท HAProxy"
# "เมื่อสัญญาณ SIGTERM ถูกส่งไปยังกระบวนการ haproxy มันจะหยุดทำงานทันทีและการเชื่อมต่อที่สร้างไว้ทั้งหมดจะถูกปิด"
# "การหยุดอย่างสง่างามเกิดขึ้นเมื่อสัญญาณ SIGUSR1 ถูกส่งไปยังกระบวนการ haproxy"
STOPSIGNAL SIGUSR1
คัดลอกนักเทียบท่า-entrypoint.sh /usr/local/bin/
จุดเข้าใช้งาน ["docker-entrypoint.sh"]
USER แฮพร็อกซี
CMD ["haproxy", "-f", "/usr/local/etc/haproxy/haproxy.cfg"]
จากนั้นสร้าง docker-entrypoint.sh ดังนี้
แตะ docker-entrypoint.sh
และวางเนื้อหาต่อไปนี้:
#!/bin/sh
ตั้ง -e
# หาเรื่องแรกคือ `-f` หรือ `--some-option`
ถ้า [ "${1#-}" != "$1" ]; แล้ว
ชุด -- haproxy "$@"
ไฟ
ถ้า [ "$1" = 'haproxy' ]; แล้ว
กะ # "haproxy"
# หากผู้ใช้ต้องการ "haproxy" ให้เพิ่มค่าสถานะที่มีประโยชน์
# -W - "โหมดผู้ปฏิบัติงานหลัก" (คล้ายกับ "haproxy-systemd-wrapper" แบบเก่า อนุญาตให้โหลดซ้ำผ่าน "SIGUSR2")
# -db - ปิดใช้งานโหมดพื้นหลัง
ชุด -- haproxy -W -db "$@"
ไฟ
ผู้บริหาร "$@"
หลังจากขั้นตอนเหล่านี้ คุณสามารถสร้างอิมเมจ haproxy ที่ใช้งานได้: นักเทียบท่า build -t haproxy