42 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			Docker
		
	
	
	
			
		
		
	
	
			42 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
 | |
| RUN cd /site && npm init -y && \
 | |
|     npm install --save-dev postcss postcss-cli autoprefixer && \
 | |
|     npm install --save-dev caniuse-lite && \
 | |
|     npm update caniuse-lite browserslist
 | |
| 
 | |
| # Build the Hugo site for production with optimizations
 | |
| # Disable GitInfo, enable minification, and set production environment
 | |
| RUN mkdir /public && \
 | |
|     cd /site && \
 | |
|     HUGO_ENABLEGITINFO=false \
 | |
|     HUGO_ENV=production \
 | |
|     npm run build:prod && \
 | |
|     cp -r /site/public/* /public/
 | |
| 
 | |
| # 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/healthcheck.txt || exit 1 |