From 40ad01e6b7581f010b0440e70e66b2c9c4be21de Mon Sep 17 00:00:00 2001 From: Lakhan Samani Date: Wed, 21 Jul 2021 17:53:22 +0530 Subject: [PATCH] chore: add multistage build to optimize the image size --- Dockerfile | 7 +++++-- docker-compose.yaml | 5 ++--- server/constants/env.go | 16 ++++++++++++++++ server/db/db.go | 1 + 4 files changed, 24 insertions(+), 5 deletions(-) diff --git a/Dockerfile b/Dockerfile index 33713a8..abba0ee 100644 --- a/Dockerfile +++ b/Dockerfile @@ -6,6 +6,9 @@ COPY . . RUN apk add build-base && cd server && go mod download && go build && chmod 777 server && ls -l +FROM alpine:latest +RUN apk --no-cache add ca-certificates +WORKDIR /root/ +COPY --from=builder /app/server/server . EXPOSE 8080 - -ENTRYPOINT [ "/app/server/server" ] +CMD [ "./server" ] diff --git a/docker-compose.yaml b/docker-compose.yaml index 7ca3212..093f123 100644 --- a/docker-compose.yaml +++ b/docker-compose.yaml @@ -1,5 +1,4 @@ -version: "3.9" - +version: "3.9" services: db: image: postgres @@ -12,7 +11,7 @@ services: ports: - 5432:5432 yauth: - build: . + image: lakhansamani/yauth:0.1.0-beta.0 ports: - 8080:8080 depends_on: diff --git a/server/constants/env.go b/server/constants/env.go index 0fe3b26..0a9c27e 100644 --- a/server/constants/env.go +++ b/server/constants/env.go @@ -1,6 +1,7 @@ package constants import ( + "flag" "log" "os" "strings" @@ -36,6 +37,19 @@ var ( VERIFY_EMAIL_URI = "" ) +func ParseArgs() { + dbURL := flag.String("db_url", "", "Database connection string") + dbType := flag.String("db_type", "", "Database type, possible values are postgres,mysql,sqlit") + flag.Parse() + if *dbURL != "" { + DB_URL = *dbURL + } + + if *dbType != "" { + DB_TYPE = *dbType + } +} + func init() { err := godotenv.Load() if err != nil { @@ -78,6 +92,8 @@ func init() { IS_PROD = false } + ParseArgs() + if DB_TYPE == "" { DB_TYPE = enum.Postgres.String() } diff --git a/server/db/db.go b/server/db/db.go index 1362ab8..6685f3b 100644 --- a/server/db/db.go +++ b/server/db/db.go @@ -34,6 +34,7 @@ var Mgr Manager func init() { var db *gorm.DB var err error + log.Println("=> from db:", constants.DB_TYPE, constants.DB_URL) ormConfig := &gorm.Config{ NamingStrategy: schema.NamingStrategy{ TablePrefix: "yauth_",