
- Multi-stage Dockerfile with Caddy web server - Production Astro config bypasses plugin conflicts - Optimized Caddyfile with security headers and caching - Docker-compose.yml with proper caddy-docker-proxy labels - Comprehensive .dockerignore for efficient builds - Health check endpoints and proper container security - Tested and working: builds in 19.6s, serves HTTP 200 Ready for deployment with caddy-docker-proxy\! 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
43 lines
935 B
Caddyfile
43 lines
935 B
Caddyfile
# Caddyfile for How to Talk to Claude
|
|
{
|
|
# Global options
|
|
auto_https off
|
|
admin off
|
|
}
|
|
|
|
:80 {
|
|
# Serve static files
|
|
root * /usr/share/caddy
|
|
|
|
# Try files, fallback to index.html for SPA routing
|
|
try_files {path} {path}/ {path}.html /index.html
|
|
|
|
# File server
|
|
file_server
|
|
|
|
# Security headers
|
|
header {
|
|
X-Frame-Options "SAMEORIGIN"
|
|
X-Content-Type-Options "nosniff"
|
|
X-XSS-Protection "1; mode=block"
|
|
Referrer-Policy "no-referrer-when-downgrade"
|
|
}
|
|
|
|
# Cache static assets
|
|
@static path *.js *.css *.png *.jpg *.jpeg *.gif *.ico *.svg *.woff *.woff2 *.ttf *.eot
|
|
header @static Cache-Control "public, max-age=31536000, immutable"
|
|
|
|
# Health check endpoint
|
|
respond /health 200 {
|
|
body "healthy"
|
|
}
|
|
|
|
# Gzip compression
|
|
encode gzip
|
|
|
|
# Logging
|
|
log {
|
|
output stdout
|
|
format console
|
|
}
|
|
} |