change Dockerfile

This commit is contained in:
dido committed 2026-10-22 20:39:23 +03:00
1 parent fe3e8809fa
commit 5547e55149
1 file changed
+5 -50
+5 -50
View File
@@ -46,54 +46,10 @@ RUN set -eux; \
find /opt/venv -path '*/site-packages/wheel*' -print0 | xargs -0 -r rm -rf || true; \
true
# Download Caddy binary for the build target (multi-arch aware)
ARG TARGETARCH
ARG TARGETVARIANT
RUN set -eux; \
DARCH="${TARGETARCH:-$(dpkg --print-architecture)}"; \
VARIANT="${TARGETVARIANT:-}"; \
case "$DARCH" in \
amd64) ARCH=amd64 ;; \
arm64) ARCH=arm64 ;; \
arm) if [ "${VARIANT}" = "v7" ]; then ARCH=armv7; else ARCH=arm; fi ;; \
*) ARCH=amd64 ;; \
esac; \
echo "Downloading Caddy for arch=${ARCH}"; \
# Try multiple candidate arch names for robustness (especially for arm variants)
candidates="${ARCH}"; \
if [ "${ARCH}" = "armv7" ]; then candidates="armv7 arm armv6"; fi; \
if [ "${ARCH}" = "arm" ]; then candidates="arm armv7 armv6"; fi; \
downloaded=0; \
for a in $candidates; do \
echo "Trying caddy download arch=$a"; \
if curl -fsSL "https://caddyserver.com/api/download?os=linux&arch=$a" -o /tmp/caddy_dl; then \
echo "Downloaded caddy for arch=$a"; downloaded=1; break; \
else \
echo "No binary for arch=$a"; fi; \
done; \
if [ "$downloaded" -ne 1 ]; then echo "Failed to download Caddy for any candidate: $candidates" >&2; exit 1; fi; \
# If it's a tar.gz archive, extract it; otherwise treat as raw binary
if tar -tzf /tmp/caddy_dl >/dev/null 2>&1; then \
tar -xzf /tmp/caddy_dl -C /tmp; \
else \
mv /tmp/caddy_dl /tmp/caddy_raw || true; \
fi; \
mkdir -p /tmp/caddy_bin_dir; \
# Preferred locations
if [ -f /tmp/caddy ]; then mv /tmp/caddy /tmp/caddy_bin_dir/caddy; fi; \
if [ -f /tmp/caddy_linux_${ARCH} ]; then mv /tmp/caddy_linux_${ARCH} /tmp/caddy_bin_dir/caddy; fi; \
if [ -f /tmp/caddy_raw ]; then mv /tmp/caddy_raw /tmp/caddy_bin_dir/caddy; fi; \
# Fallback: find any executable named 'caddy' under /tmp
if [ ! -f /tmp/caddy_bin_dir/caddy ]; then \
found=$(find /tmp -type f -name caddy -perm /111 -print -quit || true); \
if [ -n "$found" ]; then mv "$found" /tmp/caddy_bin_dir/caddy; fi; \
fi; \
if [ ! -f /tmp/caddy_bin_dir/caddy ]; then echo "Caddy binary not found after download" >&2; exit 1; fi; \
chmod +x /tmp/caddy_bin_dir/caddy; \
# Strip Caddy to reduce size
if command -v strip >/dev/null 2>&1; then strip --strip-unneeded /tmp/caddy_bin_dir/caddy || true; fi
# Stage 2: official multi-arch Caddy image (amd64, arm64, arm/v7) used as the binary source
FROM caddy:2 AS caddy
# Stage 2: Final - minimal runtime image
# Stage 3: Final - minimal runtime image
FROM python:3.11-slim-bookworm
# Install only runtime dependencies (no build tools)
@@ -122,9 +78,8 @@ RUN mkdir -p /app/src/.ssh && chown webssh:webssh /app/src/.ssh
# Copy entrypoint
RUN chmod +x /usr/local/bin/docker-entrypoint.sh
# Copy the Caddy binary prepared in the builder stage
COPY --from=builder /tmp/caddy_bin_dir/caddy /usr/local/bin/caddy
RUN chmod +x /usr/local/bin/caddy || true
# Copy the Caddy binary from the official image
COPY --from=caddy /usr/bin/caddy /usr/local/bin/caddy
# Copy Caddyfile and static assets after package installation to avoid dpkg conffile prompts
COPY deployment/Caddyfile /etc/caddy/Caddyfile