mirror of
https://gitlab.dit.htwk-leipzig.de/htwk-software/htwkalender.git
synced 2025-08-07 04:09:15 +02:00
Merge branch '7-scalability' into 'development'
fix:#7 fixed nginx/docker config See merge request htwk-software/htwkalender!27
This commit is contained in:
@@ -17,11 +17,11 @@
|
|||||||
services:
|
services:
|
||||||
htwkalender-data-manager:
|
htwkalender-data-manager:
|
||||||
image: DOCKER_REGISTRY_REPO-backend # DOCKER_REGISTRY_REPO will be replaced by CI
|
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
|
pull_policy: always
|
||||||
restart: always
|
restart: always
|
||||||
volumes:
|
volumes:
|
||||||
- pb_data:/htwkalender/data
|
- pb_data:/htwkalender-data-manager/data
|
||||||
networks:
|
networks:
|
||||||
- "net"
|
- "net"
|
||||||
|
|
||||||
|
@@ -17,11 +17,11 @@
|
|||||||
services:
|
services:
|
||||||
htwkalender-data-manager:
|
htwkalender-data-manager:
|
||||||
image: DOCKER_REGISTRY_REPO-data-manager # DOCKER_REGISTRY_REPO will be replaced by CI
|
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
|
pull_policy: always
|
||||||
restart: always
|
restart: always
|
||||||
volumes:
|
volumes:
|
||||||
- pb_data:/htwkalender/data
|
- pb_data:/htwkalender-data-manager/data
|
||||||
networks:
|
networks:
|
||||||
- "net"
|
- "net"
|
||||||
|
|
||||||
|
@@ -20,11 +20,11 @@ services:
|
|||||||
dockerfile: Dockerfile
|
dockerfile: Dockerfile
|
||||||
context: services/data-manager
|
context: services/data-manager
|
||||||
target: dev # prod
|
target: dev # prod
|
||||||
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"
|
||||||
ports:
|
#ports:
|
||||||
- "8090:8090"
|
# - "8090:8090"
|
||||||
volumes:
|
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
|
# - ./data-manager:/htwkalender/data # for development with bind mount from project directory
|
||||||
|
|
||||||
htwkalender-ical:
|
htwkalender-ical:
|
||||||
|
@@ -108,9 +108,21 @@ http {
|
|||||||
1 $binary_remote_addr;
|
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 the number of requests per IP
|
||||||
limit_req_zone $limit_key zone=feed:20m rate=20r/m;
|
limit_req_zone $limit_feed zone=feed:20m rate=20r/m;
|
||||||
limit_req_zone $limit_key zone=createFeed:10m rate=1r/m;
|
limit_req_zone $limit_createFeed zone=createFeed:10m rate=1r/m;
|
||||||
limit_req_zone $limit_key zone=modules:10m rate=30r/m;
|
limit_req_zone $limit_key zone=modules:10m rate=30r/m;
|
||||||
|
|
||||||
server {
|
server {
|
||||||
@@ -136,12 +148,8 @@ http {
|
|||||||
proxy_read_timeout 600s;
|
proxy_read_timeout 600s;
|
||||||
proxy_send_timeout 600s;
|
proxy_send_timeout 600s;
|
||||||
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=feed burst=10 nodelay;
|
||||||
|
limit_req zone=createFeed burst=10 nodelay;
|
||||||
limit_req_status 429;
|
limit_req_status 429;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -24,12 +24,12 @@ COPY . ./
|
|||||||
# download needed modules
|
# download needed modules
|
||||||
RUN apk add --no-cache --update go gcc g++ && \
|
RUN apk add --no-cache --update go gcc g++ && \
|
||||||
go mod download && \
|
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
|
# production stage
|
||||||
FROM alpine:latest AS prod
|
FROM alpine:latest AS prod
|
||||||
|
|
||||||
WORKDIR /htwkalender
|
WORKDIR /htwkalender-data-manager
|
||||||
|
|
||||||
ARG USER=ical
|
ARG USER=ical
|
||||||
RUN adduser -Ds /bin/sh $USER && \
|
RUN adduser -Ds /bin/sh $USER && \
|
||||||
@@ -39,18 +39,18 @@ USER $USER
|
|||||||
RUN mkdir -p data
|
RUN mkdir -p data
|
||||||
|
|
||||||
# copies executable from build container
|
# 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 port 8090 to the outside world
|
||||||
EXPOSE 8090
|
EXPOSE 8090
|
||||||
|
|
||||||
ENTRYPOINT ["./htwkalender", "serve"]
|
ENTRYPOINT ["./htwkalender-data-manager", "serve"]
|
||||||
|
|
||||||
|
|
||||||
FROM golang:1.21.6 AS dev
|
FROM golang:1.21.6 AS dev
|
||||||
|
|
||||||
# Set the Current Working Directory inside the container
|
# Set the Current Working Directory inside the container
|
||||||
WORKDIR /htwkalender
|
WORKDIR /htwkalender-data-manager
|
||||||
|
|
||||||
# Copy go mod and sum files
|
# Copy go mod and sum files
|
||||||
COPY go.mod go.sum ./
|
COPY go.mod go.sum ./
|
||||||
@@ -61,10 +61,10 @@ COPY *.go ./
|
|||||||
COPY . .
|
COPY . .
|
||||||
|
|
||||||
# Build the Go app
|
# 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 port 8090 to the outside world
|
||||||
EXPOSE 8090
|
EXPOSE 8090
|
||||||
|
|
||||||
# Entry point
|
# Entry point
|
||||||
ENTRYPOINT ["./htwkalender", "serve"]
|
ENTRYPOINT ["./htwkalender-data-manager", "serve"]
|
@@ -41,7 +41,7 @@ RUN mkdir -p data
|
|||||||
# copies executable from build container
|
# copies executable from build container
|
||||||
COPY --chown=$USER:$USER --from=build /htwkalender-ical ./
|
COPY --chown=$USER:$USER --from=build /htwkalender-ical ./
|
||||||
|
|
||||||
# Expose port 8090 to the outside world
|
# Expose port 8091 to the outside world
|
||||||
EXPOSE 8091
|
EXPOSE 8091
|
||||||
|
|
||||||
ENTRYPOINT ["./htwkalender-ical"]
|
ENTRYPOINT ["./htwkalender-ical"]
|
||||||
@@ -63,8 +63,8 @@ COPY . .
|
|||||||
# Build the Go app
|
# Build the Go app
|
||||||
RUN CGO_ENABLED=1 GOOS=linux go build -o /htwkalender-ical
|
RUN CGO_ENABLED=1 GOOS=linux go build -o /htwkalender-ical
|
||||||
|
|
||||||
# Expose port 8090 to the outside world
|
# Expose port 8091 to the outside world
|
||||||
EXPOSE 8090
|
EXPOSE 8091
|
||||||
|
|
||||||
# Entry point
|
# Entry point
|
||||||
ENTRYPOINT ["./htwkalender-ical"]
|
ENTRYPOINT ["./htwkalender-ical"]
|
Reference in New Issue
Block a user