feat: (back) Add Dockerfile

This commit is contained in:
NANDO9322 2025-12-09 17:52:04 -03:00
parent 2faa3aa2f9
commit 566bb540e4
4 changed files with 26 additions and 0 deletions

View file

@ -3,6 +3,7 @@ package main
import ( import (
"log" "log"
"photum-backend/docs"
"photum-backend/internal/anos_formaturas" "photum-backend/internal/anos_formaturas"
"photum-backend/internal/auth" "photum-backend/internal/auth"
"photum-backend/internal/config" "photum-backend/internal/config"
@ -13,6 +14,9 @@ import (
"photum-backend/internal/profissionais" "photum-backend/internal/profissionais"
"photum-backend/internal/tipos_eventos" "photum-backend/internal/tipos_eventos"
"photum-backend/internal/tipos_servicos" "photum-backend/internal/tipos_servicos"
"strings"
"github.com/gin-contrib/cors"
"github.com/gin-gonic/gin" "github.com/gin-gonic/gin"
swaggerFiles "github.com/swaggo/files" swaggerFiles "github.com/swaggo/files"
@ -68,7 +72,21 @@ func main() {
r := gin.Default() r := gin.Default()
// CORS Middleware
configCors := cors.DefaultConfig()
if cfg.CorsAllowedOrigins == "*" {
configCors.AllowAllOrigins = true
} else {
configCors.AllowOrigins = strings.Split(cfg.CorsAllowedOrigins, ",")
}
configCors.AllowHeaders = []string{"Origin", "Content-Length", "Content-Type", "Authorization"}
r.Use(cors.New(configCors))
// Swagger // Swagger
// Dynamically update Swagger Info
docs.SwaggerInfo.Host = cfg.SwaggerHost
docs.SwaggerInfo.Schemes = []string{"https", "http"}
r.GET("/swagger/*any", ginSwagger.WrapHandler(swaggerFiles.Handler)) r.GET("/swagger/*any", ginSwagger.WrapHandler(swaggerFiles.Handler))
// Public Routes // Public Routes
@ -140,6 +158,7 @@ func main() {
api.POST("/tipos-eventos/precos", tiposEventosHandler.SetPrice) api.POST("/tipos-eventos/precos", tiposEventosHandler.SetPrice)
} }
log.Printf("Swagger Host Configured: %s", cfg.SwaggerHost)
log.Printf("Server running on port %s", cfg.AppPort) log.Printf("Server running on port %s", cfg.AppPort)
r.Run(":" + cfg.AppPort) r.Run(":" + cfg.AppPort)
} }

View file

@ -22,6 +22,7 @@ require (
github.com/cloudwego/base64x v0.1.6 // indirect github.com/cloudwego/base64x v0.1.6 // indirect
github.com/cpuguy83/go-md2man/v2 v2.0.7 // indirect github.com/cpuguy83/go-md2man/v2 v2.0.7 // indirect
github.com/gabriel-vasile/mimetype v1.4.11 // indirect github.com/gabriel-vasile/mimetype v1.4.11 // indirect
github.com/gin-contrib/cors v1.7.6 // indirect
github.com/gin-contrib/sse v1.1.0 // indirect github.com/gin-contrib/sse v1.1.0 // indirect
github.com/go-openapi/jsonpointer v0.22.3 // indirect github.com/go-openapi/jsonpointer v0.22.3 // indirect
github.com/go-openapi/jsonreference v0.21.3 // indirect github.com/go-openapi/jsonreference v0.21.3 // indirect

View file

@ -32,6 +32,8 @@ github.com/gabriel-vasile/mimetype v1.4.2 h1:w5qFW6JKBz9Y393Y4q372O9A7cUSequkh1Q
github.com/gabriel-vasile/mimetype v1.4.2/go.mod h1:zApsH/mKG4w07erKIaJPFiX0Tsq9BFQgN3qGY5GnNgA= github.com/gabriel-vasile/mimetype v1.4.2/go.mod h1:zApsH/mKG4w07erKIaJPFiX0Tsq9BFQgN3qGY5GnNgA=
github.com/gabriel-vasile/mimetype v1.4.11 h1:AQvxbp830wPhHTqc1u7nzoLT+ZFxGY7emj5DR5DYFik= github.com/gabriel-vasile/mimetype v1.4.11 h1:AQvxbp830wPhHTqc1u7nzoLT+ZFxGY7emj5DR5DYFik=
github.com/gabriel-vasile/mimetype v1.4.11/go.mod h1:d+9Oxyo1wTzWdyVUPMmXFvp4F9tea18J8ufA774AB3s= github.com/gabriel-vasile/mimetype v1.4.11/go.mod h1:d+9Oxyo1wTzWdyVUPMmXFvp4F9tea18J8ufA774AB3s=
github.com/gin-contrib/cors v1.7.6 h1:3gQ8GMzs1Ylpf70y8bMw4fVpycXIeX1ZemuSQIsnQQY=
github.com/gin-contrib/cors v1.7.6/go.mod h1:Ulcl+xN4jel9t1Ry8vqph23a60FwH9xVLd+3ykmTjOk=
github.com/gin-contrib/sse v0.1.0 h1:Y/yl/+YNO8GZSjAhjMsSuLt29uWRFHdHYUb5lYOV9qE= github.com/gin-contrib/sse v0.1.0 h1:Y/yl/+YNO8GZSjAhjMsSuLt29uWRFHdHYUb5lYOV9qE=
github.com/gin-contrib/sse v0.1.0/go.mod h1:RHrZQHXnP2xjPF+u1gW/2HnVO7nvIa9PG3Gm+fLHvGI= github.com/gin-contrib/sse v0.1.0/go.mod h1:RHrZQHXnP2xjPF+u1gW/2HnVO7nvIa9PG3Gm+fLHvGI=
github.com/gin-contrib/sse v1.1.0 h1:n0w2GMuUpWDVp7qSpvze6fAu9iRxJY4Hmj6AmBOU05w= github.com/gin-contrib/sse v1.1.0 h1:n0w2GMuUpWDVp7qSpvze6fAu9iRxJY4Hmj6AmBOU05w=

View file

@ -16,6 +16,8 @@ type Config struct {
JwtRefreshSecret string JwtRefreshSecret string
JwtAccessTTLMinutes int JwtAccessTTLMinutes int
JwtRefreshTTLDays int JwtRefreshTTLDays int
CorsAllowedOrigins string
SwaggerHost string
} }
func LoadConfig() *Config { func LoadConfig() *Config {
@ -32,6 +34,8 @@ func LoadConfig() *Config {
JwtRefreshSecret: getEnv("JWT_REFRESH_SECRET", "refresh_secret"), JwtRefreshSecret: getEnv("JWT_REFRESH_SECRET", "refresh_secret"),
JwtAccessTTLMinutes: getEnvAsInt("JWT_ACCESS_TTL_MINUTES", 15), JwtAccessTTLMinutes: getEnvAsInt("JWT_ACCESS_TTL_MINUTES", 15),
JwtRefreshTTLDays: getEnvAsInt("JWT_REFRESH_TTL_DAYS", 30), JwtRefreshTTLDays: getEnvAsInt("JWT_REFRESH_TTL_DAYS", 30),
CorsAllowedOrigins: getEnv("CORS_ALLOWED_ORIGINS", "*"),
SwaggerHost: getEnv("SWAGGER_HOST", "localhost:8080"),
} }
} }