Add Docker and Docker Compose Deployments
This commit is contained in:
parent
038d9f3baf
commit
35e7487031
7 changed files with 84 additions and 13 deletions
22
build/docker/api-server/Dockerfile
Normal file
22
build/docker/api-server/Dockerfile
Normal 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"]
|
||||
35
build/docker/docker-compose.yaml
Normal file
35
build/docker/docker-compose.yaml
Normal 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:
|
||||
20
build/docker/keygen/Dockerfile
Normal file
20
build/docker/keygen/Dockerfile
Normal 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"]
|
||||
|
|
@ -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)
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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)
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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)
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
Loading…
Reference in a new issue