feat(docker): Add Dockerfile and compose file

This commit is contained in:
Björn Benouarets
2025-11-29 03:09:40 +01:00
parent 08055398c4
commit 3c08a2cb25
13 changed files with 381 additions and 9 deletions

View File

@@ -1,30 +1,62 @@
package main
import (
"fmt"
"net/http"
"git.secnex.io/secnex/gogwapi/config"
"git.secnex.io/secnex/gogwapi/database"
"git.secnex.io/secnex/gogwapi/models"
"git.secnex.io/secnex/gogwapi/proxy"
"git.secnex.io/secnex/masterlog"
)
func main() {
pseudonymizer := masterlog.NewPseudonymizerFromString("1234567890")
// pseudonymizer := masterlog.NewPseudonymizerFromEnv("MASTERLOG_SECRET")
masterlog.SetPseudonymizer(pseudonymizer)
masterlog.AddSensitiveFields("user_id", "password", "email")
masterlog.SetLevel(masterlog.LevelInfo)
masterlog.AddEncoder(&masterlog.JSONEncoder{})
config, err := config.LoadYAMLConfig("../config.yaml")
if err != nil {
masterlog.Error("failed to load config", map[string]interface{}{"error": err.Error()})
return
}
targets := config.Targets
masterlog.Info("Targets loaded", map[string]interface{}{"count": len(targets)})
for _, target := range targets {
targetDescription := target.Name
if target.Group != nil {
targetDescription = fmt.Sprintf("[%s] %s", *target.Group, target.Name)
}
masterlog.Info(targetDescription, map[string]interface{}{"target": target.Name, "group": *target.Group, "records": len(target.Records)})
}
allModels := []interface{}{
&models.Endpoint{},
}
dbConfig := database.NewDatabaseConfigurationFromEnv()
dbConfig := database.NewDatabaseConfigurationFromEnvAndConfig(config)
masterlog.Info("Connecting to database", map[string]interface{}{"host": dbConfig.Host, "port": dbConfig.Port, "database": dbConfig.Database})
if err := dbConfig.Connect(allModels...); err != nil {
masterlog.Error("failed to connect to database", map[string]interface{}{"error": err.Error()})
return
}
masterlog.Info("Connected to database!")
masterlog.Info("Starting server", map[string]interface{}{"port": ":3000"})
// Initialize reverse proxy
reverseProxy := proxy.NewReverseProxy(config)
// Setup HTTP server
mux := http.NewServeMux()
mux.HandleFunc("/", reverseProxy.ServeHTTP)
// Start server
addr := fmt.Sprintf(":%d", config.Server.Port)
masterlog.Info("Starting reverse proxy server", map[string]interface{}{
"port": config.Server.Port,
"address": addr,
})
if err := http.ListenAndServe(addr, mux); err != nil {
masterlog.Error("server failed to start", map[string]interface{}{"error": err.Error()})
return
}
}