Compare commits
1 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 674c75f5eb |
+1
-1
@@ -1,7 +1,7 @@
|
|||||||
# Stage 1: Build
|
# Stage 1: Build
|
||||||
FROM golang:1.22-alpine AS builder
|
FROM golang:1.22-alpine AS builder
|
||||||
WORKDIR /app
|
WORKDIR /app
|
||||||
COPY go.mod ./
|
COPY go.mod go.sum ./
|
||||||
RUN go mod download
|
RUN go mod download
|
||||||
COPY . .
|
COPY . .
|
||||||
RUN CGO_ENABLED=0 GOOS=linux go build -ldflags="-s -w" -o /gitea-mobile ./cmd/server
|
RUN CGO_ENABLED=0 GOOS=linux go build -ldflags="-s -w" -o /gitea-mobile ./cmd/server
|
||||||
|
|||||||
+1
-32
@@ -1,14 +1,10 @@
|
|||||||
package main
|
package main
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"context"
|
|
||||||
"log"
|
"log"
|
||||||
"log/slog"
|
"log/slog"
|
||||||
"net/http"
|
"net/http"
|
||||||
"os"
|
"os"
|
||||||
"os/signal"
|
|
||||||
"syscall"
|
|
||||||
"time"
|
|
||||||
|
|
||||||
"gitea.leeworks.dev/0xwheatyz/gitea-mobile/internal/config"
|
"gitea.leeworks.dev/0xwheatyz/gitea-mobile/internal/config"
|
||||||
giteaclient "gitea.leeworks.dev/0xwheatyz/gitea-mobile/internal/gitea"
|
giteaclient "gitea.leeworks.dev/0xwheatyz/gitea-mobile/internal/gitea"
|
||||||
@@ -40,35 +36,8 @@ func main() {
|
|||||||
handler = middleware.Auth(cfg.SessionSecret, cfg.GiteaToken)(handler)
|
handler = middleware.Auth(cfg.SessionSecret, cfg.GiteaToken)(handler)
|
||||||
handler = middleware.Logging()(handler)
|
handler = middleware.Logging()(handler)
|
||||||
|
|
||||||
srv := &http.Server{
|
|
||||||
Addr: cfg.ListenAddr,
|
|
||||||
Handler: handler,
|
|
||||||
}
|
|
||||||
|
|
||||||
// Channel to receive shutdown signals.
|
|
||||||
quit := make(chan os.Signal, 1)
|
|
||||||
signal.Notify(quit, syscall.SIGTERM, syscall.SIGINT)
|
|
||||||
|
|
||||||
// Start server in a goroutine.
|
|
||||||
go func() {
|
|
||||||
slog.Info("server starting", "addr", cfg.ListenAddr, "gitea_url", cfg.GiteaURL)
|
slog.Info("server starting", "addr", cfg.ListenAddr, "gitea_url", cfg.GiteaURL)
|
||||||
if err := srv.ListenAndServe(); err != nil && err != http.ErrServerClosed {
|
if err := http.ListenAndServe(cfg.ListenAddr, handler); err != nil {
|
||||||
log.Fatalf("server error: %v", err)
|
log.Fatalf("server error: %v", err)
|
||||||
}
|
}
|
||||||
}()
|
|
||||||
|
|
||||||
// Block until a shutdown signal is received.
|
|
||||||
sig := <-quit
|
|
||||||
slog.Info("shutdown signal received, draining in-flight requests", "signal", sig.String())
|
|
||||||
|
|
||||||
// Give in-flight requests up to 15 seconds to complete.
|
|
||||||
ctx, cancel := context.WithTimeout(context.Background(), 15*time.Second)
|
|
||||||
defer cancel()
|
|
||||||
|
|
||||||
if err := srv.Shutdown(ctx); err != nil {
|
|
||||||
slog.Error("server forced to shutdown", "error", err)
|
|
||||||
os.Exit(1)
|
|
||||||
}
|
|
||||||
|
|
||||||
slog.Info("server stopped gracefully")
|
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user