[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