diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..2fdbd70 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,20 @@ +# Dockerfile +FROM golang:tip-alpine3.22 AS builder +WORKDIR /app +# RUN apk add --no-cache git ca-certificates +COPY go.mod go.sum ./ +RUN go mod download +COPY . . +ENV CGO_ENABLED=0 GOOS=linux GOARCH=amd64 +RUN go build -ldflags="-s -w" -o /app/echo . + +FROM alpine:3.22 +# RUN apk add --no-cache ca-certificates tzdata && update-ca-certificates +RUN addgroup -S app && adduser -S app -G app +USER app +WORKDIR /app +COPY --from=builder /app/echo /app/echo +COPY --from=builder /app/front_files /app/front_files +# EXPOSE is optional with custom networking, we can keep or remove it as we are using custom network with compose +EXPOSE 8900 +ENTRYPOINT ["/app/echo"] diff --git a/docker-compose.yml b/docker-compose.yml new file mode 100644 index 0000000..6aaa749 --- /dev/null +++ b/docker-compose.yml @@ -0,0 +1,19 @@ + +services: + echo: + build: + context: . + dockerfile: Dockerfile + image: echo-image:latest + container_name: echo + restart: unless-stopped + ports: + - "8900:8900" + networks: + - echo-net + environment: + - TZ=UTC +networks: + echo-net: + name: echo-net + diff --git a/main.go b/main.go index ad14952..ea6fa8d 100644 --- a/main.go +++ b/main.go @@ -7,6 +7,7 @@ import ( func main() { fmt.Println("Hello from echo-echo-cho-o") + fmt.Println("Listening to port 8900") - api.BuildRouter(":8080") + api.BuildRouter(":8900") }