1
- # Copyright 2016 The Kubernetes Authors.
2
- #
3
- # Licensed under the Apache License, Version 2.0 (the "License");
4
- # you may not use this file except in compliance with the License.
5
- # You may obtain a copy of the License at
6
- #
7
- # http://www.apache.org/licenses/LICENSE-2.0
8
- #
9
- # Unless required by applicable law or agreed to in writing, software
10
- # distributed under the License is distributed on an "AS IS" BASIS,
11
- # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
- # See the License for the specific language governing permissions and
13
- # limitations under the License.
14
-
15
- FROM golang:1.10.0
16
- RUN go get github.com/codegangsta/negroni \
17
- github.com/gorilla/mux \
18
- github.com/xyproto/simpleredis/v2
1
+ # Use Go 1.18 base image
2
+ FROM golang:1.18 AS builder
3
+
4
+ # Set the working directory
19
5
WORKDIR /app
20
- ADD ./main.go .
6
+
7
+ # Copy Go module files and download dependencies
8
+ COPY go.mod go.sum ./
9
+ RUN go mod download
10
+
11
+ # Copy the source code and build the application
12
+ COPY main.go ./
21
13
RUN CGO_ENABLED=0 GOOS=linux go build -o main .
22
14
15
+ # Use a minimal base image to keep the final image small
23
16
FROM scratch
17
+
18
+ # Set the working directory
24
19
WORKDIR /app
25
- COPY --from=0 /app/main .
20
+
21
+ # Copy the built binary from the builder stage
22
+ COPY --from=builder /app/main .
23
+
24
+ # Copy static files
26
25
COPY ./public/index.html public/index.html
27
26
COPY ./public/script.js public/script.js
28
27
COPY ./public/style.css public/style.css
28
+
29
+ # Define the command to run the application
29
30
CMD ["/app/main" ]
30
- EXPOSE 3000
31
+
32
+ # Expose the port on which the application will run
33
+ EXPOSE 3000
0 commit comments