Files
njump/Dockerfile
0xtr 9360749e29 Add Tailwind bundling step to Dockerfile
Refactors the Dockerfile into multiple stages. First stage is to
build the minified Tailwind CSS bundle. Next it builds the final Go binary.
In the last step, it builds the Docker image that will run the application.
Alpine has minimal with dependencies which gives us a smaller attack
surface.
2023-10-27 17:10:18 -03:00

47 lines
893 B
Docker

#### Tailwind CSS build stage
FROM node:20 as tailwindbuilder
# Set a temporary work directory
WORKDIR /app/tailwind
# Copy in the project files
COPY . .
# Install Tailwind CLI
RUN npm install tailwindcss
# Generate minified Tailwind CSS bundle
RUN npx tailwind -i tailwind.css -o tailwind-bundle.min.css --minify
#### Go build stage
FROM golang:1.21.2 as gobuilder
# Set a temporary work directory
WORKDIR /app
# Add necessary go files
COPY go.mod go.sum ./
RUN go mod download
COPY . .
# Copy minified Tailwind CSS bundle
COPY --from=tailwindbuilder /app/tailwind/tailwind-bundle.min.css ./static/tailwind-bundle.min.css
# Build the go binary
RUN CGO_ENABLED=0 GOOS=linux go build -o main .
#### Build final image
FROM alpine:latest
RUN apk --no-cache add ca-certificates
WORKDIR /root/
# Copy Go binary
COPY --from=gobuilder /app/main .
# Run the application
CMD ["./main"]