38 lines
		
	
	
		
			722 B
		
	
	
	
		
			Docker
		
	
	
	
			
		
		
	
	
			38 lines
		
	
	
		
			722 B
		
	
	
	
		
			Docker
		
	
	
	
| FROM node:18-alpine as builder
 | |
| 
 | |
| WORKDIR /app
 | |
| 
 | |
| # Copy package files first for better caching
 | |
| COPY package*.json ./
 | |
| 
 | |
| # Clean npm cache and install dependencies with specific flags to avoid errors
 | |
| RUN npm cache clean --force && \
 | |
|     npm install --production --no-optional && \
 | |
|     npm install mocha
 | |
| 
 | |
| # Copy the rest of the application
 | |
| COPY . .
 | |
| 
 | |
| # Make sure app.sh is executable
 | |
| RUN chmod +x app.sh
 | |
| 
 | |
| # Build assets
 | |
| RUN node update-js.js
 | |
| 
 | |
| FROM node:18-alpine
 | |
| 
 | |
| WORKDIR /app
 | |
| 
 | |
| # Copy from builder stage
 | |
| COPY --from=builder /app .
 | |
| 
 | |
| # Set environment variables
 | |
| ENV NODE_ENV=production \
 | |
|     HASTEBIN_ENABLE_CSP=true \
 | |
|     HASTEBIN_ENABLE_HSTS=true
 | |
| 
 | |
| # Expose port
 | |
| EXPOSE 7777
 | |
| 
 | |
| # Use app.sh script as entry point
 | |
| CMD ["/app/app.sh"]  |