Add Docker and Docker Compose Deployments

This commit is contained in:
Divyam Ahuja 2024-10-29 12:57:42 +05:30
parent 038d9f3baf
commit 35e7487031
7 changed files with 84 additions and 13 deletions

View file

@ -0,0 +1,22 @@
FROM golang:1.23-alpine AS builder
WORKDIR /app
COPY go.mod go.sum ./
RUN go mod download
COPY . .
RUN go build -o api-server ./cmd/api-server
FROM alpine:latest
WORKDIR /app
COPY --from=builder /app/api-server /app/api-server
ENV GIN_MODE=release
EXPOSE 8080
ENTRYPOINT ["/app/api-server"]

View file

@ -0,0 +1,35 @@
services:
psql_bp:
image: postgres:latest
restart: unless-stopped
environment:
POSTGRES_DB: ${DB_DATABASE}
POSTGRES_USER: ${DB_USERNAME}
POSTGRES_PASSWORD: ${DB_PASSWORD}
healthcheck:
test: ["CMD-SHELL", "pg_isready -U", $DB_USERNAME, "-d", $DB_DATABASE]
interval: 5s
timeout: 5s
retries: 5
volumes:
- psql_volume_bp:/var/lib/postgresql/data
api_server:
env_file:
- ../../.env
depends_on:
psql_bp:
condition: service_healthy
keygen:
condition: service_started
build:
context: ../../
dockerfile: build/docker/api-server/Dockerfile
ports:
- 8080:8080
keygen:
build:
context: ../../
dockerfile: build/docker/keygen/Dockerfile
volumes:
psql_volume_bp:

View file

@ -0,0 +1,20 @@
FROM golang:1.23-alpine AS builder
WORKDIR /app
COPY go.mod go.sum ./
RUN go mod download
COPY . .
RUN go build -o keygen ./cmd/keygen
FROM alpine:latest
WORKDIR /app
COPY --from=builder /app/keygen /app/keygen
EXPOSE 8080
ENTRYPOINT ["/app/keygen"]

View file

@ -10,7 +10,7 @@ import (
)
func main() {
port, err := strconv.Atoi(env.GetEnv("API_PORT", "8080"))
port, err := strconv.Atoi(env.GetEnv("API_INTERNAL_PORT", "8080"))
if err != nil {
log.Fatalf("error listening port: %v, err: %v", port, err)
}

View file

@ -10,7 +10,7 @@ import (
)
func main() {
port, err := strconv.Atoi(env.GetEnv("API_PORT", "8080"))
port, err := strconv.Atoi(env.GetEnv("KEYGEN_INTERNAL_PORT", "8080"))
if err != nil {
log.Fatalf("error listening port: %v, err: %v", port, err)
}

View file

@ -18,8 +18,6 @@ import (
"google.golang.org/grpc/credentials/insecure"
"gorm.io/driver/postgres"
"gorm.io/gorm"
_ "fastbin/internal/pkg/env"
)
type Paste = paste.Paste
@ -87,10 +85,8 @@ func (as *APIServer) write(gc *gin.Context) {
"key": "",
})
}
fmt.Println(requestBody.Text)
key, err := as.try_write(requestBody.Text)
fmt.Println(requestBody.Text)
key, err := as.try_write(requestBody.Text)
for tries := 0; err != nil && tries < 5; tries++ {
key, err = as.try_write(requestBody.Text)
}

View file

@ -1,9 +1,7 @@
WEB_PORT=8082
# API_INTERNAL_PORT=8080 # When using without docker
# KEYGEN_INTERNAL_PORT=8081 # When using without docker
API_PORT=8080
API_HOST=localhost
KEYGEN_PORT=8081
KEYGEN_PORT=8080
KEYGEN_HOST=localhost
DB_PORT=5432