[api] compose 설정 및 dockerfile 생성 jenkinsfile생성 logback 기본생성 배너파일추가
This commit is contained in:
+14
@@ -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"]
|
||||||
@@ -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
|
||||||
|
'''
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -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
|
||||||
@@ -0,0 +1,5 @@
|
|||||||
|
spring:
|
||||||
|
application:
|
||||||
|
name: api
|
||||||
|
logging:
|
||||||
|
config: classpath:logback-pjt.xml
|
||||||
@@ -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}
|
||||||
@@ -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>
|
||||||
@@ -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>
|
||||||
Reference in New Issue
Block a user