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() {
|
func main() {
|
||||||
port, err := strconv.Atoi(env.GetEnv("API_PORT", "8080"))
|
port, err := strconv.Atoi(env.GetEnv("API_INTERNAL_PORT", "8080"))
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Fatalf("error listening port: %v, err: %v", port, err)
|
log.Fatalf("error listening port: %v, err: %v", port, err)
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -10,7 +10,7 @@ import (
|
||||||
)
|
)
|
||||||
|
|
||||||
func main() {
|
func main() {
|
||||||
port, err := strconv.Atoi(env.GetEnv("API_PORT", "8080"))
|
port, err := strconv.Atoi(env.GetEnv("KEYGEN_INTERNAL_PORT", "8080"))
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Fatalf("error listening port: %v, err: %v", port, err)
|
log.Fatalf("error listening port: %v, err: %v", port, err)
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -18,8 +18,6 @@ import (
|
||||||
"google.golang.org/grpc/credentials/insecure"
|
"google.golang.org/grpc/credentials/insecure"
|
||||||
"gorm.io/driver/postgres"
|
"gorm.io/driver/postgres"
|
||||||
"gorm.io/gorm"
|
"gorm.io/gorm"
|
||||||
|
|
||||||
_ "fastbin/internal/pkg/env"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
type Paste = paste.Paste
|
type Paste = paste.Paste
|
||||||
|
|
@ -87,10 +85,8 @@ func (as *APIServer) write(gc *gin.Context) {
|
||||||
"key": "",
|
"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++ {
|
for tries := 0; err != nil && tries < 5; tries++ {
|
||||||
key, err = as.try_write(requestBody.Text)
|
key, err = as.try_write(requestBody.Text)
|
||||||
}
|
}
|
||||||
|
|
|
||||||
10
syntax.env
10
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
|
KEYGEN_PORT=8080
|
||||||
API_HOST=localhost
|
|
||||||
|
|
||||||
KEYGEN_PORT=8081
|
|
||||||
KEYGEN_HOST=localhost
|
KEYGEN_HOST=localhost
|
||||||
|
|
||||||
DB_PORT=5432
|
DB_PORT=5432
|
||||||
DB_HOST=localhost
|
DB_HOST=localhost
|
||||||
DB_DATABASE=fastbin
|
DB_DATABASE=fastbin
|
||||||
DB_USERNAME=username
|
DB_USERNAME=username
|
||||||
DB_PASSWORD=password
|
DB_PASSWORD=password
|
||||||
Loading…
Reference in a new issue