+23
Dockerfile
+23
Dockerfile
···
1
+
FROM golang:1.25-alpine AS builder
2
+
3
+
ENV CGO_ENABLED=0 \
4
+
GOOS=linux \
5
+
GOARCH=amd64
6
+
7
+
WORKDIR /build
8
+
9
+
COPY go.mod go.sum ./
10
+
11
+
RUN go mod download
12
+
13
+
COPY . .
14
+
15
+
RUN go build -o build/pallet ./cmd/main.go
16
+
17
+
FROM alpine:3.23 AS final
18
+
19
+
COPY --from=builder /build /bin/build
20
+
21
+
EXPOSE 8080
22
+
23
+
CMD ["bin/build"]
+2
-2
cmd/main.go
+2
-2
cmd/main.go
···
7
7
8
8
_ "github.com/joho/godotenv/autoload"
9
9
"github.com/urfave/cli/v3"
10
-
"tangled.org/dane.is.extraordinarily.cool/pallet/internal/app"
11
10
"tangled.org/dane.is.extraordinarily.cool/pallet/internal/db"
12
11
"tangled.org/dane.is.extraordinarily.cool/pallet/internal/logger"
12
+
"tangled.org/dane.is.extraordinarily.cool/pallet/internal/server"
13
13
)
14
14
15
15
···
62
62
}
63
63
logger.Info("database created")
64
64
65
-
server := app.NewServer(cmd.String("port"), db, logger)
65
+
server := server.NewServer(cmd.String("port"), db, logger)
66
66
67
67
if err := server.Start(); err != nil {
68
68
log.Fatal(err)
-52
internal/app/app.go
-52
internal/app/app.go
···
1
-
package app
2
-
3
-
import (
4
-
"database/sql"
5
-
"log/slog"
6
-
"net/http"
7
-
"time"
8
-
9
-
"github.com/gorilla/mux"
10
-
)
11
-
12
-
type Server struct {
13
-
addr string
14
-
db *sql.DB
15
-
logger *slog.Logger
16
-
}
17
-
18
-
func NewServer(addr string, db *sql.DB, logger *slog.Logger) *Server {
19
-
return &Server{
20
-
addr,
21
-
db,
22
-
logger,
23
-
}
24
-
}
25
-
26
-
func (s *Server) Start() error {
27
-
router := mux.NewRouter()
28
-
server := &http.Server{
29
-
Addr: s.addr,
30
-
WriteTimeout: 5 * time.Second,
31
-
ReadTimeout: 10 * time.Second,
32
-
IdleTimeout: 30 * time.Second,
33
-
Handler: router,
34
-
}
35
-
36
-
// actorStore := actor.NewStore(s.db)
37
-
// actorHandler := actor.NewHandler(actorStore)
38
-
// actorHandler.RegisterRoutes()
39
-
40
-
router.HandleFunc("/healthcheck", func(w http.ResponseWriter, r *http.Request) {
41
-
w.WriteHeader(http.StatusOK);
42
-
w.Write([]byte("reporting for duty"))
43
-
})
44
-
45
-
router.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {
46
-
w.WriteHeader(http.StatusOK)
47
-
w.Write([]byte("hello world"))
48
-
})
49
-
50
-
s.logger.Info("app server started")
51
-
return server.ListenAndServe()
52
-
}
+13
internal/server/handlers.go
+13
internal/server/handlers.go
···
1
+
package server
2
+
3
+
import "net/http"
4
+
5
+
func (s *Server) HandleHomeRoute(w http.ResponseWriter, r *http.Request) {
6
+
w.WriteHeader(http.StatusOK)
7
+
w.Write([]byte("hello world"))
8
+
}
9
+
10
+
func (s *Server) HandleHealthcheckRoute(w http.ResponseWriter, r *http.Request) {
11
+
w.WriteHeader(http.StatusOK);
12
+
w.Write([]byte("reporting for duty"))
13
+
}
+41
internal/server/server.go
+41
internal/server/server.go
···
1
+
package server
2
+
3
+
import (
4
+
"database/sql"
5
+
"log/slog"
6
+
"net/http"
7
+
"time"
8
+
9
+
"github.com/gorilla/mux"
10
+
)
11
+
12
+
type Server struct {
13
+
addr string
14
+
db *sql.DB
15
+
logger *slog.Logger
16
+
}
17
+
18
+
func NewServer(addr string, db *sql.DB, logger *slog.Logger) *Server {
19
+
return &Server{
20
+
addr,
21
+
db,
22
+
logger,
23
+
}
24
+
}
25
+
26
+
func (s *Server) Start() error {
27
+
router := mux.NewRouter()
28
+
server := &http.Server{
29
+
Addr: s.addr,
30
+
WriteTimeout: 5 * time.Second,
31
+
ReadTimeout: 10 * time.Second,
32
+
IdleTimeout: 30 * time.Second,
33
+
Handler: router,
34
+
}
35
+
36
+
router.HandleFunc("/healthcheck", s.HandleHealthcheckRoute)
37
+
router.HandleFunc("/", s.HandleHomeRoute)
38
+
39
+
s.logger.Info("app server started")
40
+
return server.ListenAndServe()
41
+
}
-17
internal/services/actor/routes.go
-17
internal/services/actor/routes.go
···
1
-
package actor
2
-
3
-
import "github.com/gorilla/mux"
4
-
5
-
type ActorStore interface {}
6
-
7
-
type Handler struct {
8
-
store ActorStore
9
-
}
10
-
11
-
func NewHandler(store ActorStore) *Handler {
12
-
return &Handler{store}
13
-
}
14
-
15
-
func (h *Handler) RegisterRoutes(router *mux.Router) {
16
-
router.HandleFunc("/login", nil).Methods("POST")
17
-
}