Compare commits

...

3 Commits

Author SHA1 Message Date
renaldybrada
01bc12352a docker ready 2026-02-27 12:38:36 +07:00
renaldybrada
a6cba3a219 sync keycloak return eligible menu 2026-02-27 08:58:00 +07:00
renaldybrada
4097440982 remove unnecessary db log 2026-02-27 08:24:48 +07:00
6 changed files with 77 additions and 6 deletions
+7
View File
@@ -0,0 +1,7 @@
.git
.gitignore
.env
Dockerfile
docker-compose*
tmp/
*.log
+37
View File
@@ -0,0 +1,37 @@
# ================================
# 1⃣ Builder Stage
# ================================
FROM golang:1.25.3-alpine AS builder
WORKDIR /app
# Install git jika pakai private module
RUN apk add --no-cache git
# Cache dependency
COPY go.mod go.sum ./
RUN go mod download
# Copy source
COPY . .
# Build dari cmd/api
RUN CGO_ENABLED=0 GOOS=linux GOARCH=amd64 \
go build -ldflags="-s -w" \
-o app ./cmd/api
# ================================
# 2⃣ Final Stage (Distroless)
# ================================
FROM gcr.io/distroless/base-debian12
WORKDIR /app
COPY --from=builder /app/app .
# Run as non-root (distroless default user)
USER nonroot:nonroot
EXPOSE 8080
ENTRYPOINT ["/app/app"]
+5 -3
View File
@@ -64,7 +64,7 @@ func (s *service) loadFromConfig(cfg *config.Config) {
// Load primary databases
for name, dbConfig := range cfg.Databases {
fmt.Printf("db name : %s", name)
// fmt.Printf("db name : %s", name)
s.configs[name] = dbConfig
}
@@ -82,7 +82,7 @@ func (s *service) addDatabase(name string, config config.DatabaseConfig) error {
var err error
dbType := DatabaseType(config.Type)
log.Printf("Database type: %s", dbType)
// log.Printf("Database type: %s", dbType)
switch dbType {
case Postgres:
@@ -164,7 +164,9 @@ func New(cfg *config.Config) Service {
log.Println("Initializing database service...")
dbManager.loadFromConfig(cfg)
fmt.Printf("%#v\n", dbManager.configs)
if cfg.Server.Mode == "debug" {
fmt.Printf("%#v\n", dbManager.configs)
}
// Initialize all databases
for name, dbConfig := range dbManager.configs {
+1 -1
View File
@@ -52,7 +52,7 @@ func (s *service) configureSQLDB(name string, db *sql.DB, config config.Database
sqlxDB := sqlx.NewDb(db, driverName)
s.sqlxDatabases[name] = sqlxDB
log.Printf("Successfully connected to SQL database: %s", name)
// log.Printf("Successfully connected to SQL database: %s", name)
return nil
}
+15 -2
View File
@@ -67,11 +67,24 @@ func (h AccessHandler) SyncKeycloakRole(c *gin.Context) {
return
}
c.JSON(200, shared.BaseResponse[SyncKeycloakRoleRequest]{
// return eligible menu for this user
eligibleMenu, err := h.repo.GetAvailablePageByKeycloakId(c, req.KeycloakId)
if err != nil {
errMessage := []string{err.Error()}
c.JSON(500, shared.BaseErrorResponse{
Success: false,
Code: 500,
Message: "error fetch eligible menu",
Errors: errMessage,
})
return
}
c.JSON(200, shared.BaseResponse[[]AvailableMenuResponse]{
Success: true,
Code: 200,
Message: "success sync role",
Data: req,
Data: MapMenuModelToResponse(eligibleMenu),
})
}
+12
View File
@@ -86,4 +86,16 @@ Project ini menggunakan seed data untuk integrasi dengan component di frontend.
cd <project_name>
go run ./migrations/seeder.go
```
## Docker
```bash
// masuk ke root project
cd <project_name>
// build docker image
docker build -t antrianoperasi-api:latest .
// run docker container
docker run --env-file .env -p 8080:8080 antrianoperasi-api
```