diff --git a/Makefile b/Makefile index 4305466..56a6346 100644 --- a/Makefile +++ b/Makefile @@ -5,6 +5,6 @@ vet: build: CGO_ENABLED=0 GOOS=linux go build -o ./bin/ ./... db_migrate: - go run ./cmd/api/migrate/default.go + go run ./cmd/migrator/main.go docs_generate: rm -rf docs/* && swag init diff --git a/README.md b/README.md index 3cbecc6..2b1c717 100644 --- a/README.md +++ b/README.md @@ -8,7 +8,7 @@ make db_migrate ## Development -Create a dotenv file. +Create `.env` file. ```bash cp .env.example .env @@ -43,7 +43,7 @@ Binaries will be generated inside `PROJECT_ROOT/bin/` [gin-swagger](https://github.com/swaggo/gin-swagger) is used for API documentation. -To browse docs, open `BASE_URL/swagger/index.html`. +To browse the API documentation, open `BASE_URL/swagger/index.html`. Generate/update docs: diff --git a/deployments/docker-compose.yml b/deployments/docker-compose.yml index 8d8f8f4..99a0cf9 100644 --- a/deployments/docker-compose.yml +++ b/deployments/docker-compose.yml @@ -2,8 +2,10 @@ version: "3" services: api: - container_name: api - build: . + container_name: gin-api + build: + context: ../ + dockerfile: ./prod.Dockerfile ports: - "8080:8080" restart: unless-stopped diff --git a/deployments/Dockerfile b/deployments/prod.Dockerfile similarity index 65% rename from deployments/Dockerfile rename to deployments/prod.Dockerfile index 67c8645..9082880 100644 --- a/deployments/Dockerfile +++ b/deployments/prod.Dockerfile @@ -1,5 +1,5 @@ ## -## STEP 1 - BUILD +## STAGE 1 - BUILD ## FROM golang:1.20 as builder @@ -23,17 +23,17 @@ RUN go mod verify COPY . . -RUN CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -o ./bin/app . +RUN CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -o ./bin/server ./cmd/server ## -## STEP 2 - DEPLOY +## STAGE 2 - DEPLOY ## FROM scratch -COPY --from=builder /source/bin/app /app +COPY --from=builder /source/bin/server /server -COPY .env /.env +ENV TWELVE_FACTOR_MODE true COPY --from=builder /etc/passwd /etc/passwd @@ -41,4 +41,4 @@ USER 1001 EXPOSE 8080 -ENTRYPOINT ["/app"] +ENTRYPOINT ["/server"] diff --git a/internal/router/router.go b/internal/router/router.go index e759527..b9a2f25 100644 --- a/internal/router/router.go +++ b/internal/router/router.go @@ -1,6 +1,8 @@ package router import ( + "net/http" + "github.com/gin-gonic/gin" swaggerFiles "github.com/swaggo/files" ginSwagger "github.com/swaggo/gin-swagger" @@ -13,9 +15,13 @@ func RegisterRoutes() *gin.Engine { router := gin.New() router.Use(gin.Logger()) - router.Use(gin.Recovery()) + // Health check route + router.GET("/", func(c *gin.Context) { + c.String(http.StatusOK, "OK") + }) + v1 := router.Group("/api") { authGroup := v1.Group("/auth")