39 lines
1.0 KiB
Docker
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"]
|