diff --git a/build/docker/api-server/Dockerfile b/build/docker/api-server/Dockerfile new file mode 100644 index 0000000..9786864 --- /dev/null +++ b/build/docker/api-server/Dockerfile @@ -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"] diff --git a/build/docker/docker-compose.yaml b/build/docker/docker-compose.yaml new file mode 100644 index 0000000..fd6a8d3 --- /dev/null +++ b/build/docker/docker-compose.yaml @@ -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: \ No newline at end of file diff --git a/build/docker/keygen/Dockerfile b/build/docker/keygen/Dockerfile new file mode 100644 index 0000000..192c4a6 --- /dev/null +++ b/build/docker/keygen/Dockerfile @@ -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"] diff --git a/cmd/api-server/main.go b/cmd/api-server/main.go index de3943f..e590bc9 100644 --- a/cmd/api-server/main.go +++ b/cmd/api-server/main.go @@ -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) } diff --git a/cmd/keygen/main.go b/cmd/keygen/main.go index 92ce3c8..dbd2c7b 100644 --- a/cmd/keygen/main.go +++ b/cmd/keygen/main.go @@ -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) } diff --git a/internal/api-server/server.go b/internal/api-server/server.go index 9015196..99beb15 100644 --- a/internal/api-server/server.go +++ b/internal/api-server/server.go @@ -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) } diff --git a/syntax.env b/syntax.env index 7b4c703..c178ac4 100644 --- a/syntax.env +++ b/syntax.env @@ -1,13 +1,11 @@ -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 DB_HOST=localhost DB_DATABASE=fastbin DB_USERNAME=username -DB_PASSWORD=password +DB_PASSWORD=password \ No newline at end of file