From 7082458b3c6fd18be897111b94e31f61936d861d Mon Sep 17 00:00:00 2001 From: pushpit kamboj <115873371+pushpitkamboj@users.noreply.github.com> Date: Thu, 16 Nov 2023 16:43:16 +0530 Subject: [PATCH] Create Dockerfile This Dockerfile sets up a multi-stage build for a web application: The first stage compiles the Golang backend code and creates a 'main' binary. The second stage handles frontend asset compilation, specifically converting SCSS to CSS using SASS. Finally, it combines the Golang binary and compiled CSS into a final image, ready to run the web application on port 8080. Signed-off-by: pushpit kamboj <115873371+pushpitkamboj@users.noreply.github.com> --- Dockerfile | 43 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 43 insertions(+) create mode 100644 Dockerfile diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 000000000..9409cae13 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,43 @@ +# Stage 1: Build Golang backend +FROM golang:latest AS backend + +WORKDIR /app + +# Copy and build the Golang application +COPY . . +RUN go build -o main ./*.go + +# Stage 2: Build frontend assets (SCSS to CSS) +FROM node:latest AS frontend + +WORKDIR /app + +# Copy only the necessary frontend files (SCSS, etc.) +COPY . . + +# Install dependencies and compile SCSS to CSS +RUN npm install -g sass # Install SASS globally +RUN sass input.scss output.css # Replace with your SCSS compilation command + +# Stage 3: Final stage +FROM golang:latest + +WORKDIR /app + +# Copy the built Golang binary from the first stage +COPY --from=backend /app/main . + +# Copy the compiled CSS files from the second stage +COPY --from=frontend /app/output.css ./public/output.css + +# Expose the port your web application runs on (if applicable) +EXPOSE 8080 + +# Set the default command to start the web server +CMD ["./main"] + + +#if you are more familiar with CCS for frontend development than SCSS use these instruction +# Install dependencies and compile SCSS to CSS +RUN npm install -g sass # Install SASS globally (if using Node.js) +RUN sass input.scss output.css # Replace with your SCSS compilation command