Caddyserver with the following modules included:
built for AMD64, ARM64 & ARMv7
Also a few custom environment variables.
docker run -it --name caddy \
-p 80:80 \
-p 443:443 \
-v $PWD/caddy_data:/data \
-v $PWD/caddy_config:/config \
-v $PWD/Caddyfile:/etc/caddy/Caddyfile \
-v $PWD/site:/srv \
-e CLOUDFLARE_EMAIL=me@example.com \
-e CLOUDFLARE_API_TOKEN=12345 \
-e ACME_AGREE=true \
ghcr.io/saltiresoul/caddy-cf:latestCaddy does not require a full restart when configuration is changed. Caddy comes with a caddy reload command which can be used to reload its configuration with zero downtime.
Script:
caddy_container_id=$(docker ps | grep caddy | awk '{print $1;}')
docker exec -w /etc/caddy $caddy_container_id caddy reloadBash alias:
function caddyreload() {
local container_id
container_id=$(docker ps --filter "name=caddy" --format "{{.ID}}")
if [ -z "$container_id" ]; then
echo "❌ No running Caddy container found with name 'caddy'."
return 1
fi
echo "🔄 Reloading Caddy configuration in container $container_id..."
docker exec -w /etc/caddy "$container_id" caddy reload
if [ $? -eq 0 ]; then
echo "✅ Caddy configuration reloaded successfully."
else
echo "⚠️ Failed to reload Caddy configuration."
return 1
fi
}