41 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			Docker
		
	
	
	
			
		
		
	
	
			41 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			Docker
		
	
	
	
| # Stage 1: Build Hugo site
 | |
| FROM alpine:latest AS hugo-builder
 | |
| 
 | |
| # Install necessary dependencies (Hugo, Git, Node.js, and npm)
 | |
| RUN apk add --no-cache hugo git nodejs npm
 | |
| 
 | |
| # Copy our enhanced Caddyfile
 | |
| COPY Caddyfile.default.template /etc/caddy/Caddyfile.override
 | |
| 
 | |
| # Set working directory
 | |
| WORKDIR /site
 | |
| 
 | |
| # Copy the Hugo source files
 | |
| COPY public/ /site
 | |
| 
 | |
| # Install PostCSS and its dependencies locally and update browserslist with legacy-peer-deps
 | |
| RUN cd /site && npm init -y || true && \
 | |
|     npm install --legacy-peer-deps && \
 | |
|     npm update caniuse-lite browserslist --legacy-peer-deps
 | |
| 
 | |
| # Build the Hugo site for production with optimizations
 | |
| # Disable GitInfo, enable minification, and set production environment
 | |
| RUN mkdir -p /public && \
 | |
|     cd /site && \
 | |
|     HUGO_ENABLEGITINFO=false \
 | |
|     HUGO_ENV=production \
 | |
|     npm run build || hugo --minify -d /public && \
 | |
|     cp -r /site/public/* /public/ || true
 | |
| 
 | |
| # Stage 2: Production image with prebuilt static files
 | |
| FROM git.nixc.us/colin/container-base:production-nixiusstatic
 | |
| 
 | |
| # Copy the built site from the first stage
 | |
| COPY --from=hugo-builder /public /srv
 | |
| 
 | |
| # Copy our enhanced Caddyfile for development
 | |
| COPY Caddyfile.default.template /etc/caddy/Caddyfile.override
 | |
| 
 | |
| # Add health check endpoint for production monitoring
 | |
| HEALTHCHECK --interval=30s --timeout=3s --start-period=5s --retries=3 \
 | |
|     CMD wget -q --spider http://localhost/health || exit 1 |