feat: add Docker Compose deployment and serve assets via StaticFS
Embed full assets directory and serve with via's StaticFS instead of a custom HTTP handler. Move SQLite DB to data/c4.db for clean volume mounting. Add multi-stage Dockerfile, docker-compose.yml, and .dockerignore.
This commit is contained in:
25
main.go
25
main.go
@@ -4,11 +4,11 @@ import (
|
||||
"context"
|
||||
"crypto/md5"
|
||||
"database/sql"
|
||||
_ "embed"
|
||||
"embed"
|
||||
"encoding/hex"
|
||||
"encoding/json"
|
||||
"io/fs"
|
||||
"log"
|
||||
"net/http"
|
||||
"os"
|
||||
"sync"
|
||||
"time"
|
||||
@@ -32,17 +32,14 @@ var (
|
||||
queries *gen.Queries
|
||||
)
|
||||
|
||||
//go:embed assets/css/output.css
|
||||
var daisyUICSS []byte
|
||||
//go:embed assets
|
||||
var assets embed.FS
|
||||
|
||||
func DaisyUIPlugin(v *via.V) {
|
||||
sum := md5.Sum(daisyUICSS)
|
||||
css, _ := fs.ReadFile(assets, "assets/css/output.css")
|
||||
sum := md5.Sum(css)
|
||||
version := hex.EncodeToString(sum[:4])
|
||||
v.HTTPServeMux().HandleFunc("GET /_plugins/daisyui/style.css", func(w http.ResponseWriter, r *http.Request) {
|
||||
w.Header().Set("Content-Type", "text/css")
|
||||
_, _ = w.Write(daisyUICSS)
|
||||
})
|
||||
v.AppendToHead(h.Link(h.Rel("stylesheet"), h.Href("/_plugins/daisyui/style.css?v="+version)))
|
||||
v.AppendToHead(h.Link(h.Rel("stylesheet"), h.Href("/assets/css/output.css?v="+version)))
|
||||
}
|
||||
|
||||
func port() string {
|
||||
@@ -55,7 +52,10 @@ func port() string {
|
||||
func main() {
|
||||
_ = godotenv.Load()
|
||||
|
||||
if err := db.Init("c4.db"); err != nil {
|
||||
if err := os.MkdirAll("data", 0o755); err != nil {
|
||||
log.Fatal(err)
|
||||
}
|
||||
if err := db.Init("data/c4.db"); err != nil {
|
||||
log.Fatal(err)
|
||||
}
|
||||
queries = gen.New(db.DB)
|
||||
@@ -76,6 +76,9 @@ func main() {
|
||||
Plugins: []via.Plugin{DaisyUIPlugin},
|
||||
})
|
||||
|
||||
subFS, _ := fs.Sub(assets, "assets")
|
||||
v.StaticFS("/assets/", subFS)
|
||||
|
||||
store.SetPubSub(v.PubSub())
|
||||
snakeStore.SetPubSub(v.PubSub())
|
||||
|
||||
|
||||
Reference in New Issue
Block a user