Skip to content

Commit 123aba2

Browse files
authored
Merge pull request #22 from Gachon-Univ-Creative-Code-Innovation/feat/GUC-193-alarm-service-deploy
Feat/guc 193 alarm service deploy
2 parents 0af8e78 + f481107 commit 123aba2

File tree

10 files changed

+216
-16
lines changed

10 files changed

+216
-16
lines changed

.idea/misc.xml

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Dockerfile

Lines changed: 25 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,28 @@
1-
# 테스트 용도
2-
FROM eclipse-temurin:17-jdk-alpine
1+
## 테스트 용도
2+
#FROM eclipse-temurin:17-jdk-alpine
3+
#
4+
#ARG JAR_FILE=build/libs/*.jar
5+
#COPY ${JAR_FILE} app.jar
6+
#
7+
#EXPOSE 8080
8+
#
9+
#ENTRYPOINT ["java", "-jar", "/app.jar"]
310

4-
ARG JAR_FILE=build/libs/*.jar
5-
COPY ${JAR_FILE} app.jar
11+
# 1단계: 빌드 스테이지
12+
# 1단계: 빌드 스테이지
13+
FROM --platform=linux/amd64 gradle:8.5.0-jdk17 AS builder
614

7-
EXPOSE 8080
15+
WORKDIR /app
816

9-
ENTRYPOINT ["java", "-jar", "/app.jar"]
17+
COPY . .
18+
19+
RUN gradle clean build -x test
20+
21+
# 2단계: 실행 스테이지
22+
FROM --platform=linux/amd64 eclipse-temurin:17-jdk
23+
24+
WORKDIR /app
25+
26+
COPY --from=builder /app/build/libs/*.jar app.jar
27+
28+
ENTRYPOINT ["java", "-jar", "/app/app.jar"]

bin/main/application-dev.yml

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
spring:
2+
datasource:
3+
url: ${LOCAL_DB_URL}
4+
username: ${LOCAL_DB_USERNAME}
5+
password: ${LOCAL_DB_PASSWORD}
6+
7+
jpa:
8+
hibernate:
9+
ddl-auto: update
10+
11+
kafka:
12+
bootstrap-servers: localhost:9092
13+
consumer:
14+
group-id: alarm-group
15+
auto-offset-reset: earliest
16+
key-deserializer: org.apache.kafka.common.serialization.StringDeserializer
17+
value-deserializer: org.springframework.kafka.support.serializer.JsonDeserializer
18+
properties:
19+
spring.json.trusted.packages: "*"
20+
producer:
21+
key-serializer: org.apache.kafka.common.serialization.StringSerializer
22+
value-serializer: org.springframework.kafka.support.serializer.JsonSerializer
23+
topic:
24+
notification: alarm-topic
25+
26+
27+
jwt:
28+
secret: ${JWT_SECRET}
29+
30+
31+
management:
32+
endpoints:
33+
web:
34+
exposure:
35+
include: health, info, prometheus
36+
37+
prometheus:
38+
metrics:
39+
export:
40+
enabled: true

bin/main/application-prod.yml

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
spring:
2+
datasource:
3+
url: ${PROD_DB_URL}
4+
username: ${PROD_DB_USERNAME}
5+
password: ${PROD_DB_PASSWORD}
6+
7+
jpa:
8+
hibernate:
9+
ddl-auto: update
10+
11+
kafka:
12+
bootstrap-servers: kafka:29092
13+
consumer:
14+
group-id: alarm-group
15+
auto-offset-reset: earliest
16+
key-deserializer: org.apache.kafka.common.serialization.StringDeserializer
17+
value-deserializer: org.springframework.kafka.support.serializer.JsonDeserializer
18+
properties:
19+
spring.json.trusted.packages: "*"
20+
producer:
21+
key-serializer: org.apache.kafka.common.serialization.StringSerializer
22+
value-serializer: org.springframework.kafka.support.serializer.JsonSerializer
23+
topic:
24+
notification: alarm-topic
25+
26+
27+
jwt:
28+
secret: ${JWT_SECRET}
29+
30+
31+
management:
32+
endpoints:
33+
web:
34+
exposure:
35+
include: health, info, prometheus
36+
37+
prometheus:
38+
metrics:
39+
export:
40+
enabled: true

bin/main/application.yml

Lines changed: 14 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,15 @@
11
spring:
2-
datasource:
3-
url: ${LOCAL_DB_URL}
4-
username: ${LOCAL_DB_USERNAME}
5-
password: ${LOCAL_DB_PASSWORD}
6-
7-
jpa:
8-
hibernate:
9-
ddl-auto: update
2+
profiles:
3+
active: cloud
4+
application:
5+
name: alarm-service
6+
config:
7+
import: "optional:configserver:"
8+
cloud:
9+
config:
10+
uri: http://config-service.config.svc.cluster.local:8888
11+
name: alarm-service
12+
label: main
13+
fail-fast: true
14+
server:
15+
port: 8087

bin/main/logback-spring.xml

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
<configuration>
2+
3+
<appender name="JSON_CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
4+
<encoder class="net.logstash.logback.encoder.LogstashEncoder" />
5+
</appender>
6+
7+
<root level="INFO">
8+
<appender-ref ref="JSON_CONSOLE" />
9+
</root>
10+
11+
</configuration>

bin/test/application-test.yml

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
spring:
2+
datasource:
3+
url: jdbc:h2:mem:testdb;MODE=PostgreSQL
4+
driver-class-name: org.h2.Driver
5+
username: sa
6+
password:
7+
8+
jpa:
9+
hibernate:
10+
ddl-auto: create-drop
11+
show-sql: true
12+
properties:
13+
hibernate:
14+
format_sql: true
15+
16+
kafka:
17+
bootstrap-servers: dummy:9092 # 테스트에서는 실제 브로커 사용 안 함
18+
consumer:
19+
group-id: test-group
20+
auto-offset-reset: earliest
21+
key-deserializer: org.apache.kafka.common.serialization.StringDeserializer
22+
value-deserializer: org.apache.kafka.common.serialization.StringDeserializer
23+
producer:
24+
key-serializer: org.apache.kafka.common.serialization.StringSerializer
25+
value-serializer: org.apache.kafka.common.serialization.StringSerializer
26+
topic:
27+
notification: test-alarm-topic
28+
29+
logging:
30+
level:
31+
org.hibernate.SQL: debug
32+
33+
34+
35+
jwt:
36+
secret: ${JWT_SECRET}

build.gradle

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,10 @@ plugins {
44
id 'io.spring.dependency-management' version '1.1.7'
55
}
66

7+
ext {
8+
springCloudVersion = "2024.0.1"
9+
}
10+
711
group = 'com.gucci'
812
version = '0.0.1-SNAPSHOT'
913

@@ -22,6 +26,7 @@ configurations {
2226
dependencies {
2327
implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
2428
implementation 'org.springframework.boot:spring-boot-starter-web'
29+
implementation 'org.springframework.cloud:spring-cloud-starter-config'
2530
compileOnly 'org.projectlombok:lombok'
2631
developmentOnly 'org.springframework.boot:spring-boot-devtools'
2732
runtimeOnly 'org.postgresql:postgresql'
@@ -45,6 +50,12 @@ dependencies {
4550
implementation 'net.logstash.logback:logstash-logback-encoder:7.4'
4651
}
4752

53+
dependencyManagement {
54+
imports {
55+
mavenBom "org.springframework.cloud:spring-cloud-dependencies:$springCloudVersion"
56+
}
57+
}
58+
4859
tasks.named('test') {
4960
useJUnitPlatform()
5061
}
Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
package com.gucci.alarm_service.controller;
2+
3+
import lombok.RequiredArgsConstructor;
4+
import org.springframework.core.env.Environment;
5+
import org.springframework.http.HttpStatus;
6+
import org.springframework.http.ResponseEntity;
7+
import org.springframework.web.bind.annotation.GetMapping;
8+
import org.springframework.web.bind.annotation.RequestMapping;
9+
import org.springframework.web.bind.annotation.RestController;
10+
11+
@RestController
12+
@RequestMapping("/api/alarm-service")
13+
@RequiredArgsConstructor
14+
public class HealthCheckController {
15+
private final Environment environment;
16+
17+
@GetMapping("/health-check")
18+
public ResponseEntity<String> healthCheck() {
19+
return ResponseEntity.status(HttpStatus.OK)
20+
.body(
21+
"Alarm Service is running on port: "
22+
+ environment.getProperty("local.server.port")
23+
);
24+
}
25+
}

src/main/resources/application.yml

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,15 @@
11
spring:
22
profiles:
3-
active: dev
3+
active: cloud
4+
application:
5+
name: alarm-service
6+
config:
7+
import: "optional:configserver:"
8+
cloud:
9+
config:
10+
uri: http://config-service.config.svc.cluster.local:8888
11+
name: alarm-service
12+
label: main
13+
fail-fast: true
14+
server:
15+
port: 8087

0 commit comments

Comments
 (0)