Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions src/backend/auth-server/docker-compose.yml
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,8 @@ services:
depends_on:
mysql:
condition: service_healthy
redis:
condition: service_healthy
ports:
- "${AUTH_PORT}:${AUTH_PORT}"
environment:
Expand Down
6 changes: 3 additions & 3 deletions src/backend/chat-server/Dockerfile
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
# 1️⃣ 베이스 이미지로 OpenJDK 17 사용
FROM openjdk:17-jdk-slim AS build
FROM amazoncorretto:17-alpine AS build

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

이 버전이 M4에 맞는 버전이군요! 바꿔주셔서 감사합니다~ 😄

# 2️⃣ 작업 디렉토리 설정
WORKDIR /app
Expand All @@ -12,11 +12,11 @@ RUN chmod +x gradlew
RUN ./gradlew build -x test

# 5️⃣ 런타임 이미지로 OpenJDK 17 사용
FROM openjdk:17-jdk-slim
FROM amazoncorretto:17-alpine
WORKDIR /app

# 6️⃣ 빌드된 JAR 파일 복사
COPY --from=build /app/build/libs/*.jar app.jar

# 7️⃣ 컨테이너 실행 시 Spring Boot 애플리케이션 실행
ENTRYPOINT ["java", "-jar", "app.jar"]
ENTRYPOINT ["java", "-jar", "app.jar"]
6 changes: 6 additions & 0 deletions src/backend/chat-server/docker-compose.yml
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,9 @@ services:
- "${CHAT_PORT_1}:${CHAT_PORT_1}"
networks:
- kickzo-network
depends_on:
kafka:
condition: service_healthy

chat-2:
build:
Expand All @@ -24,6 +27,9 @@ services:
- "${CHAT_PORT_2}:${CHAT_PORT_2}"
networks:
- kickzo-network
depends_on:
kafka:
condition: service_healthy

networks:
kickzo-network:
Expand Down
45 changes: 24 additions & 21 deletions src/backend/chat-server/src/main/resources/logback.xml
Original file line number Diff line number Diff line change
Expand Up @@ -2,37 +2,40 @@
<configuration packagingData="true">
<timestamp key="timestamp" datePattern="yyyy-MM-dd-HH-mm-ssSSS"/>

<appender name="aws_cloud_watch_log" class="ca.pjer.logback.AwsLogsAppender">
<layout>
<pattern>[%thread] [%date] [%level] [%file:%line] - %msg%n</pattern>
</layout>
<logGroupName>kickzo-logs</logGroupName>
<logStreamUuidPrefix>kickzo-log</logStreamUuidPrefix>
<logRegion>ap-northeast-1</logRegion>
<maxBatchLogEvents>50</maxBatchLogEvents>
<maxFlushTimeMillis>30000</maxFlushTimeMillis>
<maxBlockTimeMillis>5000</maxBlockTimeMillis>
<retentionTimeDays>0</retentionTimeDays>
<accessKeyId>${AWS_ACCESS_KEY}</accessKeyId>
<secretAccessKey>${AWS_SECRET_KEY}</secretAccessKey>
</appender>

<property name="CONSOLE_LOG_PATTERN" value="%highlight(%-5level) %date [%thread] %cyan([%C{0} :: %M :: %L]) - %msg%n"/>
<appender name="console_log" class="ch.qos.logback.core.ConsoleAppender">
<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
<pattern>${CONSOLE_LOG_PATTERN}</pattern>
</encoder>
</appender>

<springProfile name="dev">
<root level="INFO">
<!-- AWS CloudWatch 설정은 prod 프로필에서만 사용 -->
<springProfile name="prod">
<appender name="aws_cloud_watch_log" class="ca.pjer.logback.AwsLogsAppender">
<layout>
<pattern>[%thread] [%date] [%level] [%file:%line] - %msg%n</pattern>
</layout>
<logGroupName>kickzo-logs</logGroupName>
<logStreamUuidPrefix>kickzo-log</logStreamUuidPrefix>
<logRegion>ap-northeast-1</logRegion>
<maxBatchLogEvents>50</maxBatchLogEvents>
<maxFlushTimeMillis>30000</maxFlushTimeMillis>
<maxBlockTimeMillis>5000</maxBlockTimeMillis>
<retentionTimeDays>0</retentionTimeDays>
<accessKeyId>${AWS_ACCESS_KEY}</accessKeyId>
<secretAccessKey>${AWS_SECRET_KEY}</secretAccessKey>
</appender>

<root level="WARN">
<appender-ref ref="aws_cloud_watch_log"/>
<appender-ref ref="console_log"/>
</root>
</springProfile>

<springProfile name="docker">
<root level="WARN">
<appender-ref ref="aws_cloud_watch_log"/>
<!-- 개발 환경(dev, docker)에서는 콘솔 로깅만 사용 -->
<springProfile name="dev,docker,default">
<root level="INFO">
<appender-ref ref="console_log"/>
</root>
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

prod 환경이랑 개발 환경이랑 나누는 방법 좋은데요!?! 이렇게 바꾸면 매번 파일 들어가서 수정할 일이 없을 것 같네요! 감사합니다 :)

</springProfile>
</configuration>
</configuration>
26 changes: 18 additions & 8 deletions src/backend/elk/docker-compose-es.yml
Original file line number Diff line number Diff line change
Expand Up @@ -16,24 +16,34 @@ services:
volumes:
- es-data:/usr/share/elasticsearch/data
- ./elasticsearch-init.sh:/usr/share/elasticsearch/init.sh
entrypoint: [ "/bin/sh", "-c", "/usr/share/elasticsearch/init.sh & /usr/local/bin/docker-entrypoint.sh" ]
entrypoint:
[
"/bin/sh",
"-c",
"/usr/share/elasticsearch/init.sh & /usr/local/bin/docker-entrypoint.sh",
]
ulimits:
memlock:
soft: -1
hard: -1
networks:
- kickzo-network
restart: always
# ARM64 아키텍처 문제 해결을 위한 플랫폼 지정
platform: linux/amd64
healthcheck:
test: [ "CMD", "curl", "-f", "http://localhost:9200/_cluster/health" ]
interval: 10s
timeout: 5s
retries: 10
start_period: 10s
test:
[
"CMD-SHELL",
'curl -s http://localhost:9200/_cluster/health | grep -vq ''"status":"red"''',
Copy link

Copilot AI Apr 1, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The quoting in the Elasticsearch healthcheck command may not work as intended, which could fail to detect a 'red' status correctly. Consider revising the test command to use clearer quote escaping (e.g., 'grep -vq ""status":"red""') to ensure proper healthcheck evaluation.

Suggested change
'curl -s http://localhost:9200/_cluster/health | grep -vq ''"status":"red"''',
"curl -s http://localhost:9200/_cluster/health | grep -vq '\"status\":\"red\"'",

Copilot uses AI. Check for mistakes.
Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

제안 전 코드로 healthcheck 되는 것을 확인했기 때문에 변경하지 않습니다.

]
interval: 5s
timeout: 3s
retries: 20
start_period: 30s

volumes:
es-data:

networks:
kickzo-network:
driver: bridge
driver: bridge
17 changes: 10 additions & 7 deletions src/backend/elk/docker-compose-kibana.yml
Original file line number Diff line number Diff line change
Expand Up @@ -16,16 +16,19 @@ services:
networks:
- kickzo-network
healthcheck:
test: [ "CMD", "curl", "-f", "http://localhost:5601/api/status" ]
interval: 10s
timeout: 5s
retries: 10
start_period: 10s

test:
[
"CMD-SHELL",
"curl -s -I http://localhost:5601/app/home | grep -q '200 OK'",
]
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

grep -q '200 OK'
제가 놓친 부분이었네요!

interval: 5s
timeout: 3s
retries: 20
start_period: 30s

volumes:
es-data:

networks:
kickzo-network:
driver: bridge
driver: bridge
6 changes: 3 additions & 3 deletions src/backend/file-server/Dockerfile
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
# 1️⃣ 베이스 이미지로 OpenJDK 17 사용
FROM openjdk:17-jdk-slim AS build
FROM amazoncorretto:17-alpine AS build

# 2️⃣ 작업 디렉토리 설정
WORKDIR /app
Expand All @@ -12,11 +12,11 @@ RUN chmod +x gradlew
RUN ./gradlew build -x test

# 5️⃣ 런타임 이미지로 OpenJDK 17 사용
FROM openjdk:17-jdk-slim
FROM amazoncorretto:17-alpine
WORKDIR /app

# 6️⃣ 빌드된 JAR 파일 복사
COPY --from=build /app/build/libs/*.jar app.jar

# 7️⃣ 컨테이너 실행 시 Spring Boot 애플리케이션 실행
ENTRYPOINT ["java", "-jar", "app.jar"]
ENTRYPOINT ["java", "-jar", "app.jar"]
4 changes: 2 additions & 2 deletions src/backend/history-server/Dockerfile
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
# 베이스 이미지로 OpenJDK 17 사용
FROM openjdk:17-jdk-slim
FROM amazoncorretto:17-alpine

# 애플리케이션 파일을 컨테이너에 복사
ARG JAR_FILE=kickzo-0.0.1-SNAPSHOT.jar
COPY ${JAR_FILE} app.jar

# 애플리케이션 실행
ENTRYPOINT ["java", "-jar", "/app.jar"]
ENTRYPOINT ["java", "-jar", "/app.jar"]
19 changes: 19 additions & 0 deletions src/backend/kafka/docker-compose.yml
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,12 @@ services:
- "2181:2181"
networks:
- kickzo-network
healthcheck:
test: echo srvr | nc localhost 2181 || exit 1
interval: 5s
timeout: 3s
retries: 20
start_period: 30s

kafka:
image: wurstmeister/kafka:latest
Expand All @@ -26,6 +32,19 @@ services:
- /var/run/docker.sock:/var/run/docker.sock
networks:
- kickzo-network
healthcheck:
test:
[
"CMD-SHELL",
"/opt/kafka/bin/kafka-topics.sh --bootstrap-server kafka:${KAFKA_INTERNAL_PORT} --list",
]
interval: 5s
timeout: 3s
retries: 20
start_period: 30s
depends_on:
zookeeper:
condition: service_healthy

networks:
kickzo-network:
Expand Down
4 changes: 2 additions & 2 deletions src/backend/main-server/main/Dockerfile
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
# 1️⃣ Java 21 LTS 기반 이미지 사용
FROM eclipse-temurin:21-jdk AS build
FROM amazoncorretto:21-alpine AS build

# 2️⃣ 작업 디렉토리 설정
WORKDIR /app
Expand All @@ -12,7 +12,7 @@ RUN chmod +x gradlew
RUN ./gradlew build -x test

# 5️⃣ 실행을 위한 Java 21 런타임 이미지
FROM eclipse-temurin:21-jdk-jammy
FROM amazoncorretto:21-alpine
WORKDIR /app

# 6️⃣ 빌드된 JAR 복사
Expand Down
4 changes: 4 additions & 0 deletions src/backend/main-server/main/docker-compose.yml
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,10 @@ services:
condition: service_healthy
kibana:
condition: service_healthy
mysql:
condition: service_healthy
redis:
condition: service_healthy
networks:
- kickzo-network

Expand Down
45 changes: 24 additions & 21 deletions src/backend/main-server/main/src/main/resources/logback.xml
Original file line number Diff line number Diff line change
Expand Up @@ -2,37 +2,40 @@
<configuration packagingData="true">
<timestamp key="timestamp" datePattern="yyyy-MM-dd-HH-mm-ssSSS"/>

<appender name="aws_cloud_watch_log" class="ca.pjer.logback.AwsLogsAppender">
<layout>
<pattern>[%thread] [%date] [%level] [%file:%line] - %msg%n</pattern>
</layout>
<logGroupName>kickzo-logs</logGroupName>
<logStreamUuidPrefix>kickzo-log</logStreamUuidPrefix>
<logRegion>ap-northeast-1</logRegion>
<maxBatchLogEvents>50</maxBatchLogEvents>
<maxFlushTimeMillis>30000</maxFlushTimeMillis>
<maxBlockTimeMillis>5000</maxBlockTimeMillis>
<retentionTimeDays>0</retentionTimeDays>
<accessKeyId>${AWS_ACCESS_KEY}</accessKeyId>
<secretAccessKey>${AWS_SECRET_KEY}</secretAccessKey>
</appender>

<property name="CONSOLE_LOG_PATTERN" value="%highlight(%-5level) %date [%thread] %cyan([%C{0} :: %M :: %L]) - %msg%n"/>
<appender name="console_log" class="ch.qos.logback.core.ConsoleAppender">
<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
<pattern>${CONSOLE_LOG_PATTERN}</pattern>
</encoder>
</appender>

<springProfile name="dev">
<root level="INFO">
<!-- AWS CloudWatch 설정은 prod 프로필에서만 사용 -->
<springProfile name="prod">
<appender name="aws_cloud_watch_log" class="ca.pjer.logback.AwsLogsAppender">
<layout>
<pattern>[%thread] [%date] [%level] [%file:%line] - %msg%n</pattern>
</layout>
<logGroupName>kickzo-logs</logGroupName>
<logStreamUuidPrefix>kickzo-log</logStreamUuidPrefix>
<logRegion>ap-northeast-1</logRegion>
<maxBatchLogEvents>50</maxBatchLogEvents>
<maxFlushTimeMillis>30000</maxFlushTimeMillis>
<maxBlockTimeMillis>5000</maxBlockTimeMillis>
<retentionTimeDays>0</retentionTimeDays>
<accessKeyId>${AWS_ACCESS_KEY}</accessKeyId>
<secretAccessKey>${AWS_SECRET_KEY}</secretAccessKey>
</appender>

<root level="WARN">
<appender-ref ref="aws_cloud_watch_log"/>
<appender-ref ref="console_log"/>
</root>
</springProfile>

<springProfile name="docker">
<root level="WARN">
<appender-ref ref="aws_cloud_watch_log"/>
<!-- 개발 환경(dev, docker)에서는 콘솔 로깅만 사용 -->
<springProfile name="dev,docker,default">
<root level="INFO">
<appender-ref ref="console_log"/>
</root>
</springProfile>
</configuration>
</configuration>
6 changes: 6 additions & 0 deletions src/backend/redis/docker-compose.yml
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,12 @@ services:
container_name: redis
ports:
- "${REDIS_HOST_PORT}:${REDIS_CONTAINER_PORT}"
healthcheck:
test: ["CMD", "redis-cli", "ping"]
interval: 5s
timeout: 5s
retries: 10
start_period: 5s
networks:
- kickzo-network
volumes:
Expand Down
4 changes: 2 additions & 2 deletions src/backend/signaling-server/Dockerfile
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
# 1️⃣ Java 21 LTS 기반 이미지 사용
FROM eclipse-temurin:21-jdk AS build
FROM amazoncorretto:21-alpine AS build

# 2️⃣ 작업 디렉토리 설정
WORKDIR /app
Expand All @@ -12,7 +12,7 @@ RUN chmod +x gradlew
RUN ./gradlew build -x test

# 5️⃣ 실행을 위한 Java 21 런타임 이미지
FROM eclipse-temurin:21-jdk-jammy
FROM amazoncorretto:21-alpine
WORKDIR /app

# 6️⃣ 빌드된 JAR 복사
Expand Down
4 changes: 2 additions & 2 deletions src/backend/state-server/Dockerfile
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
# 베이스 이미지로 OpenJDK 17 사용
FROM openjdk:17-jdk-slim
FROM amazoncorretto:17-alpine

# 애플리케이션 파일을 컨테이너에 복사
ARG JAR_FILE=state-0.0.1-SNAPSHOT.jar
COPY ${JAR_FILE} app.jar

# 애플리케이션 실행
ENTRYPOINT ["java", "-jar", "/app.jar"]
ENTRYPOINT ["java", "-jar", "/app.jar"]
Loading