Skip to content

Commit 43e4849

Browse files
committed
fix some issues, use Traefik instead of nginx
1 parent cb17355 commit 43e4849

19 files changed

Lines changed: 2465 additions & 138 deletions

File tree

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212

1313
# Package Files #
1414
*.jar
15+
!gradle/wrapper/gradle-wrapper.jar
1516
*.war
1617
*.nar
1718
*.ear

docker/client.Dockerfile

Lines changed: 6 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -11,19 +11,16 @@ ENV NODE_ENV=production
1111

1212
RUN npm run build
1313

14-
# Serve the production build with nginx
15-
FROM nginx:1.29-alpine AS runner
14+
# Serve the production build with Caddy
15+
FROM caddy:2-alpine AS runner
1616

17-
# Install curl for health checks
18-
RUN apk add --no-cache curl
19-
20-
COPY docker/nginx.conf /etc/nginx/conf.d/default.conf
21-
COPY --from=builder /app/dist /usr/share/nginx/html
17+
COPY --from=builder /app/dist /srv
2218
COPY docker/docker-entrypoint.sh /docker-entrypoint.sh
2319

24-
RUN chmod +x /docker-entrypoint.sh
20+
RUN chmod +x /docker-entrypoint.sh && \
21+
echo ':80 { root * /srv; file_server; try_files {path} /index.html; encode gzip }' > /etc/caddy/Caddyfile
2522

2623
EXPOSE 80
2724

2825
ENTRYPOINT ["/docker-entrypoint.sh"]
29-
CMD ["nginx", "-g", "daemon off;"]
26+
CMD ["caddy", "run", "--config", "/etc/caddy/Caddyfile"]

docker/docker-compose-prod.yml

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -59,6 +59,12 @@ services:
5959
STAFFPLAN_CORS_ALLOWED_ORIGINS: ${CLIENT_HOST}
6060
networks:
6161
- staffplan-network
62+
labels:
63+
- "traefik.enable=true"
64+
- "traefik.http.routers.staffplan-api.rule=Host(`${DOMAIN}`) && PathPrefix(`/api`, `/actuator`)"
65+
- "traefik.http.routers.staffplan-api.entrypoints=websecure"
66+
- "traefik.http.routers.staffplan-api.tls.certresolver=letsencrypt"
67+
- "traefik.http.services.staffplan-api.loadbalancer.server.port=8080"
6268
healthcheck:
6369
test: ["CMD", "curl", "-f", "http://localhost:8080/actuator/health"]
6470
interval: 10s
@@ -72,8 +78,6 @@ services:
7278
condition: service_healthy
7379
environment:
7480
KEYCLOAK_URL: ${KEYCLOAK_URL}
75-
volumes:
76-
- ./nginx.conf:/etc/nginx/conf.d/default.conf:ro
7781
networks:
7882
- staffplan-network
7983
labels:
@@ -83,7 +87,7 @@ services:
8387
- "traefik.http.routers.staffplan.tls.certresolver=letsencrypt"
8488
- "traefik.http.services.staffplan.loadbalancer.server.port=80"
8589
healthcheck:
86-
test: ["CMD", "curl", "-f", "http://localhost"]
90+
test: ["CMD", "wget", "-q", "--spider", "http://localhost"]
8791
interval: 10s
8892
retries: 5
8993

gradle/wrapper/gradle-wrapper.jar

44.6 KB
Binary file not shown.

src/main/java/de/tum/cit/aet/core/security/CurrentUserProvider.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -73,7 +73,7 @@ public void assertSameResearchGroupIfNotPrivileged(ResearchGroup target) {
7373
assertCanAccessResearchGroup(target);
7474
}
7575
}
76-
76+
7777
public void assertCanAccessResearchGroup(ResearchGroup target) {
7878
if(target != null && target.isArchived()){
7979
throw new AccessDeniedException("The research group is archived.");

src/main/java/de/tum/cit/aet/usermanagement/domain/User.java

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,8 +9,6 @@
99
import org.hibernate.annotations.UpdateTimestamp;
1010
import org.hibernate.type.SqlTypes;
1111

12-
import java.security.MessageDigest;
13-
import java.security.NoSuchAlgorithmException;
1412
import java.time.Instant;
1513
import java.util.*;
1614

src/main/java/de/tum/cit/aet/usermanagement/service/AuthenticationService.java

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
package de.tum.cit.aet.usermanagement.service;
22

3-
import de.tum.cit.aet.core.exceptions.ResourceNotFoundException;
43
import de.tum.cit.aet.usermanagement.domain.User;
54
import de.tum.cit.aet.usermanagement.domain.UserGroup;
65
import de.tum.cit.aet.usermanagement.domain.key.UserGroupId;
@@ -10,7 +9,6 @@
109
import org.springframework.security.oauth2.server.resource.authentication.JwtAuthenticationToken;
1110
import org.springframework.stereotype.Service;
1211
import org.springframework.transaction.annotation.Transactional;
13-
import org.springframework.web.multipart.MultipartFile;
1412

1513
import java.time.Instant;
1614
import java.util.HashSet;
@@ -101,7 +99,7 @@ public User updateAuthenticatedUser(JwtAuthenticationToken jwt) {
10199

102100
return userRepository.save(user);
103101
}
104-
102+
105103
private String getUniversityId(JwtAuthenticationToken jwt) {
106104
return jwt.getName();
107105
}

src/main/webapp/angular.json

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,10 @@
22
"$schema": "./node_modules/@angular/cli/lib/config/schema.json",
33
"version": 1,
44
"cli": {
5-
"packageManager": "npm"
5+
"packageManager": "npm",
6+
"schematicCollections": [
7+
"angular-eslint"
8+
]
69
},
710
"newProjectRoot": "projects",
811
"projects": {
@@ -71,6 +74,15 @@
7174
},
7275
"test": {
7376
"builder": "@angular/build:unit-test"
77+
},
78+
"lint": {
79+
"builder": "@angular-eslint/builder:lint",
80+
"options": {
81+
"lintFilePatterns": [
82+
"src/**/*.ts",
83+
"src/**/*.html"
84+
]
85+
}
7486
}
7587
}
7688
}

src/main/webapp/eslint.config.js

Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
// @ts-check
2+
const eslint = require("@eslint/js");
3+
const { defineConfig } = require("eslint/config");
4+
const tseslint = require("typescript-eslint");
5+
const angular = require("angular-eslint");
6+
7+
module.exports = defineConfig([
8+
{
9+
files: ["**/*.ts"],
10+
extends: [
11+
eslint.configs.recommended,
12+
tseslint.configs.recommended,
13+
tseslint.configs.stylistic,
14+
angular.configs.tsRecommended,
15+
],
16+
processor: angular.processInlineTemplates,
17+
rules: {
18+
"@angular-eslint/directive-selector": [
19+
"error",
20+
{
21+
type: "attribute",
22+
prefix: "app",
23+
style: "camelCase",
24+
},
25+
],
26+
"@angular-eslint/component-selector": [
27+
"error",
28+
{
29+
type: "element",
30+
prefix: "app",
31+
style: "kebab-case",
32+
},
33+
],
34+
},
35+
},
36+
{
37+
files: ["**/*.html"],
38+
extends: [
39+
angular.configs.templateRecommended,
40+
angular.configs.templateAccessibility,
41+
],
42+
rules: {},
43+
}
44+
]);

0 commit comments

Comments
 (0)