[api] compose 설정 및 dockerfile 생성 jenkinsfile생성 logback 기본생성 배너파일추가

This commit is contained in:
2026-02-02 16:29:33 +09:00
parent cbc0d644be
commit 75d1dc0dff
8 changed files with 179 additions and 0 deletions
+14
View File
@@ -0,0 +1,14 @@
FROM amazoncorretto:21
# healthcheck용 curl 설치
RUN yum -y install curl && yum clean all
WORKDIR /api
# build/libs 아래 산출물 이름이 바뀌어도 대응
ARG JAR_FILE=build/libs/*.jar
COPY ${JAR_FILE} api.jar
ENV JAVA_OPTS=""
ENTRYPOINT ["sh","-c","java $JAVA_OPTS -jar /api/api.jar"]
+30
View File
@@ -0,0 +1,30 @@
pipeline {
agent any
options {
timestamps()
disableConcurrentBuilds()
}
environment {
// ===== Registry =====
}
stages {
stage('1) Git check out') {
steps {
checkout scm
}
}
stage('2) Build (Gradle)') {
steps {
sh '''
set -e
chmod +x ./gradlew
./gradlew clean build -x test
'''
}
}
}
}
+37
View File
@@ -0,0 +1,37 @@
services:
app:
image: registry.pjt.kr/alist/api:${IMAGE_TAG}
restart: always
ports:
- "127.0.0.1:8006:8080"
env_file:
- /srv/project/alist/env/api/.env
# 🔴 핵심: 로그 볼륨 연결
volumes:
- /srv/project/alist/logs/api/app:/logs
environment:
JAVA_OPTS: >-
-Dspring.profiles.active=${SPRING_PROFILE}
-Xms${JVM_XMS}
-Xmx${JVM_XMX}
-XX:MaxMetaspaceSize=${JVM_META}
-Dfile.encoding=UTF-8
-Duser.timezone=Asia/Seoul
healthcheck:
test: ["CMD-SHELL", "curl -fsS http://localhost:8080/actuator/health || exit 1"]
interval: 10s
timeout: 3s
retries: 10
start_period: 30s
# 🟡 보험: 도커 로그 폭주 방지
logging:
driver: json-file
options:
max-size: "10m"
max-file: "5"
@@ -0,0 +1,5 @@
spring:
application:
name: api
logging:
config: classpath:logback-local.xml
+5
View File
@@ -0,0 +1,5 @@
spring:
application:
name: api
logging:
config: classpath:logback-pjt.xml
+16
View File
@@ -0,0 +1,16 @@
q p ,,
db \ / `7MMF' db mm
;MM:o=--*--=o MM MM
,V^MM. / \ MM `7MM ,pP"Ybd mmMMmm
,M `MM d b MM MM 8I `" MM
AbmmmqMA MM , MM `YMMMa. MM
A' VML MM ,M MM L. I8 MM
.AMA. .AMMA. .JMMmmmmMMM .JMML.M9mmmP' `Mbmo
:: ALIST API ::
Application : ${spring.application.name}
Profile : ${spring.profiles.active}
Spring Boot : ${spring-boot.version}
Java : ${java.version}
+22
View File
@@ -0,0 +1,22 @@
<?xml version="1.0" encoding="UTF-8"?>
<configuration scan="true">
<!-- 로그 디렉토리 -->
<property name="LOG_PATH" value="/logs" />
<!-- 콘솔 -->
<appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>
</encoder>
</appender>
<!-- ==== 로컬(local) ==== -->
<root level="INFO">
<appender-ref ref="CONSOLE"/>
</root>
<!-- 우리 코드 -->
<logger name="com.alist.api" level="DEBUG"/>
</configuration>
+50
View File
@@ -0,0 +1,50 @@
<?xml version="1.0" encoding="UTF-8"?>
<configuration scan="true">
<!-- 로그 디렉토리 -->
<property name="LOG_PATH" value="/logs" />
<!-- 콘솔 -->
<appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>
</encoder>
</appender>
<!-- 파일 (운영에서 사용) -->
<appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
<!-- 현재 로그는 고정 위치 (tail 편함) -->
<file>${LOG_PATH}/app.log</file>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<!-- 롤링 파일은 날짜 폴더(yyyy/MM) 하위로 저장 -->
<fileNamePattern>
${LOG_PATH}/%d{yyyy/MM}/app.%d{yyyy-MM-dd}.%i.log.gz
</fileNamePattern>
<timeBasedFileNamingAndTriggeringPolicy
class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
<maxFileSize>50MB</maxFileSize>
</timeBasedFileNamingAndTriggeringPolicy>
<maxHistory>180</maxHistory>
<cleanHistoryOnStart>true</cleanHistoryOnStart>
</rollingPolicy>
<encoder>
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} %-5level [%thread] %logger - %msg%n</pattern>
</encoder>
</appender>
<!-- ==== 빅펀개발(pjt) ==== -->
<!-- 기본 -->
<root level="INFO">
<appender-ref ref="FILE"/>
</root>
<!-- 우리 코드 -->
<logger name="com.alist.api" level="INFO"/>
</configuration>