Files
caddy-proxy-manager/docker/caddy/Dockerfile

39 lines
1.0 KiB
Docker

# syntax=docker/dockerfile:1.6
FROM golang:1.25 AS builder
# Install xcaddy
RUN go install github.com/caddyserver/xcaddy/cmd/xcaddy@latest
# Build Caddy with plugins
RUN xcaddy build \
--with github.com/caddy-dns/cloudflare \
--with github.com/mholt/caddy-l4 \
--output /usr/bin/caddy
FROM ubuntu:24.04
# Install runtime dependencies
RUN apt-get update && apt-get install -y --no-install-recommends \
ca-certificates \
wget \
&& rm -rf /var/lib/apt/lists/*
# Copy caddy binary from builder
COPY --from=builder /usr/bin/caddy /usr/bin/caddy
COPY docker/caddy/Caddyfile /etc/caddy/Caddyfile
# Create caddy user and directories
RUN groupadd caddy && useradd -r -g caddy -m -d /home/caddy caddy \
&& mkdir -p /data /config \
&& chown -R caddy:caddy /data /config /home/caddy
EXPOSE 80 443 2019
# Set environment variables to use /data and /config like official Caddy image
ENV XDG_CONFIG_HOME=/config
ENV XDG_DATA_HOME=/data
USER caddy
CMD ["caddy", "run", "--resume", "--config", "/etc/caddy/Caddyfile", "--adapter", "caddyfile"]