Merge branch '7-scalability' into 'development'

fix:#7 fixed nginx/docker config

See merge request htwk-software/htwkalender!27
This commit is contained in:
Elmar Kresse
2024-06-10 22:15:39 +00:00
6 changed files with 33 additions and 25 deletions

View File

@ -17,11 +17,11 @@
services:
htwkalender-data-manager:
image: DOCKER_REGISTRY_REPO-backend # DOCKER_REGISTRY_REPO will be replaced by CI
command: "--http=0.0.0.0:8090 --dir=/htwkalender/data/pb_data"
command: "--http=0.0.0.0:8090 --dir=/htwkalender-data-manager/data/pb_data"
pull_policy: always
restart: always
volumes:
- pb_data:/htwkalender/data
- pb_data:/htwkalender-data-manager/data
networks:
- "net"

View File

@ -17,11 +17,11 @@
services:
htwkalender-data-manager:
image: DOCKER_REGISTRY_REPO-data-manager # DOCKER_REGISTRY_REPO will be replaced by CI
command: "--http=0.0.0.0:8090 --dir=/htwkalender/data/pb_data"
command: "--http=0.0.0.0:8090 --dir=/htwkalender-data-manager/data/pb_data"
pull_policy: always
restart: always
volumes:
- pb_data:/htwkalender/data
- pb_data:/htwkalender-data-manager/data
networks:
- "net"

View File

@ -20,11 +20,11 @@ services:
dockerfile: Dockerfile
context: services/data-manager
target: dev # prod
command: "--http=0.0.0.0:8090 --dir=/htwkalender/data/pb_data"
ports:
- "8090:8090"
command: "--http=0.0.0.0:8090 --dir=/htwkalender-data-manager/data/pb_data"
#ports:
# - "8090:8090"
volumes:
- pb_data:/htwkalender/data # for production with volume
- pb_data:/htwkalender-data-manager/data # for production with volume
# - ./data-manager:/htwkalender/data # for development with bind mount from project directory
htwkalender-ical:

View File

@ -108,9 +108,21 @@ http {
1 $binary_remote_addr;
}
# Different rate limits for different request methods
map $request_method $limit_feed {
POST ''; # Create feed is limited to 1 request per minute
default $binary_remote_addr; # All other requests are limited to 20 requests per minute
}
map $request_method $limit_createFeed {
POST $binary_remote_addr; # Create feed is limited to 1 request per minute
default ''; # All other requests are limited to 20 requests per minute
}
# Limit the number of requests per IP
limit_req_zone $limit_key zone=feed:20m rate=20r/m;
limit_req_zone $limit_key zone=createFeed:10m rate=1r/m;
limit_req_zone $limit_feed zone=feed:20m rate=20r/m;
limit_req_zone $limit_createFeed zone=createFeed:10m rate=1r/m;
limit_req_zone $limit_key zone=modules:10m rate=30r/m;
server {
@ -136,12 +148,8 @@ http {
proxy_read_timeout 600s;
proxy_send_timeout 600s;
send_timeout 600s;
# Apply rate limiting
if ($request_method = POST) {
limit_req zone=createFeed burst=10 nodelay;
}
limit_req zone=feed burst=10 nodelay;
limit_req zone=createFeed burst=10 nodelay;
limit_req_status 429;
}

View File

@ -24,12 +24,12 @@ COPY . ./
# download needed modules
RUN apk add --no-cache --update go gcc g++ && \
go mod download && \
CGO_ENABLED=1 GOOS=linux go build -o /htwkalender
CGO_ENABLED=1 GOOS=linux go build -o /htwkalender-data-manager
# production stage
FROM alpine:latest AS prod
WORKDIR /htwkalender
WORKDIR /htwkalender-data-manager
ARG USER=ical
RUN adduser -Ds /bin/sh $USER && \
@ -39,18 +39,18 @@ USER $USER
RUN mkdir -p data
# copies executable from build container
COPY --chown=$USER:$USER --from=build /htwkalender ./
COPY --chown=$USER:$USER --from=build /htwkalender-data-manager ./
# Expose port 8090 to the outside world
EXPOSE 8090
ENTRYPOINT ["./htwkalender", "serve"]
ENTRYPOINT ["./htwkalender-data-manager", "serve"]
FROM golang:1.21.6 AS dev
# Set the Current Working Directory inside the container
WORKDIR /htwkalender
WORKDIR /htwkalender-data-manager
# Copy go mod and sum files
COPY go.mod go.sum ./
@ -61,10 +61,10 @@ COPY *.go ./
COPY . .
# Build the Go app
RUN CGO_ENABLED=1 GOOS=linux go build -o /htwkalender
RUN CGO_ENABLED=1 GOOS=linux go build -o /htwkalender-data-manager
# Expose port 8090 to the outside world
EXPOSE 8090
# Entry point
ENTRYPOINT ["./htwkalender", "serve"]
ENTRYPOINT ["./htwkalender-data-manager", "serve"]

View File

@ -41,7 +41,7 @@ RUN mkdir -p data
# copies executable from build container
COPY --chown=$USER:$USER --from=build /htwkalender-ical ./
# Expose port 8090 to the outside world
# Expose port 8091 to the outside world
EXPOSE 8091
ENTRYPOINT ["./htwkalender-ical"]
@ -63,8 +63,8 @@ COPY . .
# Build the Go app
RUN CGO_ENABLED=1 GOOS=linux go build -o /htwkalender-ical
# Expose port 8090 to the outside world
EXPOSE 8090
# Expose port 8091 to the outside world
EXPOSE 8091
# Entry point
ENTRYPOINT ["./htwkalender-ical"]