37 lines
		
	
	
		
			859 B
		
	
	
	
		
			Docker
		
	
	
	
	
	
			
		
		
	
	
			37 lines
		
	
	
		
			859 B
		
	
	
	
		
			Docker
		
	
	
	
	
	
# Use a multi-stage build to create a minimal Docker image
 | 
						|
 | 
						|
# Stage 1: Build the Go application
 | 
						|
FROM golang:1.23-alpine as builder
 | 
						|
 | 
						|
# Set the working directory inside the container
 | 
						|
WORKDIR /app
 | 
						|
 | 
						|
# Copy go.mod and go.sum files if you have them
 | 
						|
COPY go.mod go.sum ./
 | 
						|
 | 
						|
# Download all dependencies
 | 
						|
RUN go mod download
 | 
						|
 | 
						|
# Copy the source code into the container
 | 
						|
COPY . .
 | 
						|
 | 
						|
# Build the Go application
 | 
						|
RUN go build -o confetti-api main.go
 | 
						|
 | 
						|
# Stage 2: Create a minimal image with the application binary
 | 
						|
FROM alpine:latest
 | 
						|
 | 
						|
# Install ca-certificates to handle HTTPS requests
 | 
						|
RUN apk --no-cache add ca-certificates
 | 
						|
 | 
						|
# Set the working directory inside the container
 | 
						|
WORKDIR /root/
 | 
						|
 | 
						|
# Copy the binary from the builder stage
 | 
						|
COPY --from=builder /app/confetti-api .
 | 
						|
 | 
						|
# Expose port 8080 for the application
 | 
						|
EXPOSE 8080
 | 
						|
 | 
						|
# Command to run the application
 | 
						|
CMD ["./confetti-api"] |