From 1129f4017f48dc43162dabb70f79ce6e59c725fc Mon Sep 17 00:00:00 2001 From: bcjang Date: Fri, 27 Jun 2025 09:30:22 +0900 Subject: [PATCH] =?UTF-8?q?=EC=84=A4=EC=A0=95=EA=B4=80=EB=A0=A8=20?= =?UTF-8?q?=EC=88=98=EC=A0=95=20docker=20=ED=99=98=EA=B2=BD=EC=84=A4?= =?UTF-8?q?=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Dockerfile.dev | 31 +++++++++++++-- Dockerfile.live | 31 +++++++++++++-- Dockerfile.qa | 29 ++++++++++++-- Dockerfile.stage | 30 ++++++++++++-- Jenkinsfile.live | 6 +++ Jenkinsfile.stage | 6 +++ src/main/resources/config/application.yml | 9 +++-- src/main/resources/config/dev/application.yml | 5 ++- .../resources/config/live/application.yml | 5 ++- .../resources/config/local/application.yml | 39 ++++++++++--------- src/main/resources/config/qa/application.yml | 5 ++- .../resources/config/stage/application.yml | 5 ++- 12 files changed, 157 insertions(+), 44 deletions(-) diff --git a/Dockerfile.dev b/Dockerfile.dev index b5c6ab2..18e2aa1 100644 --- a/Dockerfile.dev +++ b/Dockerfile.dev @@ -4,10 +4,33 @@ ARG JAR_FILE=build/libs/CaliverseAdminAPI-dev.jar COPY ${JAR_FILE} admintool.jar ENTRYPOINT ["java", \ - "-Xms2g", \ - "-Xmx8g", \ - "-XX:+UseG1GC", \ - "-XX:MaxGCPauseMillis=200", \ + "-Xms1g", \ + "-Xmx2g", \ + + # GC 설정 (G1GC 최적화) + "-XX:+UseG1GC", \ + "-XX:MaxGCPauseMillis=100", \ + "-XX:G1HeapRegionSize=8m", \ + "-XX:InitiatingHeapOccupancyPercent=20", \ + + # OutOfMemoryError 대응 + "-XX:+HeapDumpOnOutOfMemoryError", \ + "-XX:HeapDumpPath=/logs/heapdump-%t.hprof", \ + "-XX:+ExitOnOutOfMemoryError", \ + + # GC 로깅 (문제 분석용) + "-Xlog:gc*:logs/gc.log:time,tags", \ + "-XX:+UseStringDeduplication", \ + + # 메모리 최적화 + "-XX:+UseCompressedOops", \ + "-XX:+UseCompressedClassPointers", \ + "-XX:+UseStringDeduplication", \ + "-XX:MaxMetaspaceSize=256m", \ + + # 네트워크 최적화 + "-Djava.net.preferIPv4Stack=true", \ + "-Djava.io.tmpdir=/tmp", \ "-Dfile.encoding=UTF-8", \ "-Djava.awt.headless=true", \ diff --git a/Dockerfile.live b/Dockerfile.live index c901984..c64a6c4 100644 --- a/Dockerfile.live +++ b/Dockerfile.live @@ -4,12 +4,37 @@ ARG JAR_FILE=build/libs/CaliverseAdminAPI-live.jar COPY ${JAR_FILE} admintool.jar ENTRYPOINT ["java", \ - "-Xms2g", \ - "-Xmx8g", \ + # 메모리 설정 + "-Xms1g", \ + "-Xmx4g", \ + + # GC 설정 (G1GC 최적화) "-XX:+UseG1GC", \ - "-XX:MaxGCPauseMillis=200", \ + "-XX:MaxGCPauseMillis=100", \ + "-XX:G1HeapRegionSize=8m", \ + "-XX:InitiatingHeapOccupancyPercent=20", \ + + # OutOfMemoryError 대응 + "-XX:+HeapDumpOnOutOfMemoryError", \ + "-XX:HeapDumpPath=/logs/heapdump-%t.hprof", \ + "-XX:+ExitOnOutOfMemoryError", \ + + # GC 로깅 (문제 분석용) + "-Xlog:gc*:logs/gc.log:time,tags", \ + "-XX:+UseStringDeduplication", \ + + # 메모리 최적화 + "-XX:+UseCompressedOops", \ + "-XX:+UseCompressedClassPointers", \ + "-XX:+UseStringDeduplication", \ + "-XX:MaxMetaspaceSize=256m", \ + + # 네트워크 최적화 + "-Djava.net.preferIPv4Stack=true", \ + "-Djava.io.tmpdir=/tmp", \ "-Dfile.encoding=UTF-8", \ "-Djava.awt.headless=true", \ + "-Dspring.profiles.active=live", \ "-jar", "/admintool.jar"] \ No newline at end of file diff --git a/Dockerfile.qa b/Dockerfile.qa index e857ed8..2d020c4 100644 --- a/Dockerfile.qa +++ b/Dockerfile.qa @@ -4,10 +4,33 @@ ARG JAR_FILE=build/libs/CaliverseAdminAPI-qa.jar COPY ${JAR_FILE} admintool.jar ENTRYPOINT ["java", \ - "-Xms2g", \ - "-Xmx4g", \ + "-Xms1g", \ + "-Xmx2g", \ + + # GC 설정 (G1GC 최적화) "-XX:+UseG1GC", \ - "-XX:MaxGCPauseMillis=200", \ + "-XX:MaxGCPauseMillis=100", \ + "-XX:G1HeapRegionSize=8m", \ + "-XX:InitiatingHeapOccupancyPercent=20", \ + + # OutOfMemoryError 대응 + "-XX:+HeapDumpOnOutOfMemoryError", \ + "-XX:HeapDumpPath=/logs/heapdump-%t.hprof", \ + "-XX:+ExitOnOutOfMemoryError", \ + + # GC 로깅 (문제 분석용) + "-Xlog:gc*:logs/gc.log:time,tags", \ + "-XX:+UseStringDeduplication", \ + + # 메모리 최적화 + "-XX:+UseCompressedOops", \ + "-XX:+UseCompressedClassPointers", \ + "-XX:+UseStringDeduplication", \ + "-XX:MaxMetaspaceSize=256m", \ + + # 네트워크 최적화 + "-Djava.net.preferIPv4Stack=true", \ + "-Djava.io.tmpdir=/tmp", \ "-Dfile.encoding=UTF-8", \ "-Djava.awt.headless=true", \ diff --git a/Dockerfile.stage b/Dockerfile.stage index 293af3c..c0601f9 100644 --- a/Dockerfile.stage +++ b/Dockerfile.stage @@ -4,12 +4,36 @@ ARG JAR_FILE=build/libs/CaliverseAdminAPI-stage.jar COPY ${JAR_FILE} admintool.jar ENTRYPOINT ["java", \ - "-Xms2g", \ - "-Xmx8g", \ + "-Xms1g", \ + "-Xmx4g", \ + + # GC 설정 (G1GC 최적화) "-XX:+UseG1GC", \ - "-XX:MaxGCPauseMillis=200", \ + "-XX:MaxGCPauseMillis=100", \ + "-XX:G1HeapRegionSize=8m", \ + "-XX:InitiatingHeapOccupancyPercent=20", \ + + # OutOfMemoryError 대응 + "-XX:+HeapDumpOnOutOfMemoryError", \ + "-XX:HeapDumpPath=/logs/heapdump-%t.hprof", \ + "-XX:+ExitOnOutOfMemoryError", \ + + # GC 로깅 (문제 분석용) + "-Xlog:gc*:logs/gc.log:time,tags", \ + "-XX:+UseStringDeduplication", \ + + # 메모리 최적화 + "-XX:+UseCompressedOops", \ + "-XX:+UseCompressedClassPointers", \ + "-XX:+UseStringDeduplication", \ + "-XX:MaxMetaspaceSize=256m", \ + + # 네트워크 최적화 + "-Djava.net.preferIPv4Stack=true", \ + "-Djava.io.tmpdir=/tmp", \ "-Dfile.encoding=UTF-8", \ "-Djava.awt.headless=true", \ + "-Dspring.profiles.active=stage", \ "-jar", "/admintool.jar"] \ No newline at end of file diff --git a/Jenkinsfile.live b/Jenkinsfile.live index 380345a..aa2e6a1 100644 --- a/Jenkinsfile.live +++ b/Jenkinsfile.live @@ -135,6 +135,12 @@ pipeline { --name ${DOCKER_NAME} \ --restart=always \ --log-opt max-size=10m \ + --memory=6g \ + --memory-swap=6g \ + --cpus="1.8" \ + --cpu-shares=1024 \ + --oom-kill-disable=false \ + --oom-score-adj=100 \ -e TZ=\${TZ:-Asia/Seoul} \ -v ./admintool/log:/logs \ -v ./admintool/upload:/upload \ diff --git a/Jenkinsfile.stage b/Jenkinsfile.stage index a61098a..5a3d5f1 100644 --- a/Jenkinsfile.stage +++ b/Jenkinsfile.stage @@ -135,6 +135,12 @@ pipeline { --name ${DOCKER_NAME} \ --restart=always \ --log-opt max-size=10m \ + --memory=6g \ + --memory-swap=6g \ + --cpus="1.8" \ + --cpu-shares=1024 \ + --oom-kill-disable=false \ + --oom-score-adj=100 \ -e TZ=\${TZ:-Asia/Seoul} \ -v ./admintool/log:/logs \ -v ./admintool/upload:/upload \ diff --git a/src/main/resources/config/application.yml b/src/main/resources/config/application.yml index ed57d1d..860d060 100644 --- a/src/main/resources/config/application.yml +++ b/src/main/resources/config/application.yml @@ -1,12 +1,13 @@ +server: + tomcat: + max-http-form-post-size: 50MB + max-swallow-size: 50MB + spring: servlet: multipart: max-file-size: 5MB max-request-size: 10MB - ## deploy -# profiles: -# active: stage - jwt: secret_key: '81b659967735aea6e4cb0467d04ea12c4a6432b415254f59825055680f59a9823fec5a15e9adbd246b1365ef1522580477691bc5cb56a9364143e7d9385d9912' diff --git a/src/main/resources/config/dev/application.yml b/src/main/resources/config/dev/application.yml index f803b7e..0c39106 100644 --- a/src/main/resources/config/dev/application.yml +++ b/src/main/resources/config/dev/application.yml @@ -112,8 +112,9 @@ amazon: secretkey: G82Bq5tCUTvSPe9InGayH8kONbtEnLxMrgzrAbCn region: us-west-2 s3: - bucket-name: metaverse-myhomeugc-test - enabled: false + bucket-name: metaverse-admintool + cloud-front: https://d1yr1qrnuiu29u.cloudfront.net/ + enabled: true diff --git a/src/main/resources/config/live/application.yml b/src/main/resources/config/live/application.yml index c73a24b..5b61f0b 100644 --- a/src/main/resources/config/live/application.yml +++ b/src/main/resources/config/live/application.yml @@ -111,8 +111,9 @@ amazon: secretkey: G82Bq5tCUTvSPe9InGayH8kONbtEnLxMrgzrAbCn region: us-west-2 s3: - bucket-name: metaverse-myhomeugc-live - enabled: false + bucket-name: metaverse-admintool + cloud-front: https://d1yr1qrnuiu29u.cloudfront.net/ + enabled: true diff --git a/src/main/resources/config/local/application.yml b/src/main/resources/config/local/application.yml index 4b3b3e7..e22ab9f 100644 --- a/src/main/resources/config/local/application.yml +++ b/src/main/resources/config/local/application.yml @@ -114,7 +114,8 @@ amazon: # secretkey: G82Bq5tCUTvSPe9InGayH8kONbtEnLxMrgzrAbCn # region: us-west-2 s3: - bucket-name: metaverse-myhomeugc-test + bucket-name: metaverse-admintool + cloud-front: https://d1yr1qrnuiu29u.cloudfront.net/ enabled: true @@ -145,15 +146,15 @@ rabbitmq: # Mongodb ################################################################################################################################################################################################ mongodb: -# host: 10.20.20.8:27017 -# business-log: -# username: "" -# password: "" -# db: LogDB -# indicator: -# username: "" -# password: "" -# db: IndicatorDB + host: 10.20.20.8:27017 + business-log: + username: "" + password: "" + db: LogDB + indicator: + username: "" + password: "" + db: IndicatorDB #local # host: localhost:27017 # business-log: @@ -165,15 +166,15 @@ mongodb: # password: "" # db: IndicatorDB #live - host: metaverse-live.7d0do.mongodb.net - business-log: - username: metaverseliverw - password: K1spqwBbHrP2ZSMX - db: BusinessLog-Db-Live - indicator: - username: metaverseliverw - password: K1spqwBbHrP2ZSMX - db: BackOffice-Db-Live +# host: metaverse-live.7d0do.mongodb.net +# business-log: +# username: metaverseliverw +# password: K1spqwBbHrP2ZSMX +# db: BusinessLog-Db-Live +# indicator: +# username: metaverseliverw +# password: K1spqwBbHrP2ZSMX +# db: BackOffice-Db-Live ################################################################################################################################################################################################ diff --git a/src/main/resources/config/qa/application.yml b/src/main/resources/config/qa/application.yml index d10e178..07fc3b2 100644 --- a/src/main/resources/config/qa/application.yml +++ b/src/main/resources/config/qa/application.yml @@ -113,8 +113,9 @@ amazon: secretkey: G82Bq5tCUTvSPe9InGayH8kONbtEnLxMrgzrAbCn region: us-west-2 s3: - bucket-name: metaverse-myhomeugc-qa - enabled: false + bucket-name: metaverse-admintool + cloud-front: https://d1yr1qrnuiu29u.cloudfront.net/ + enabled: true diff --git a/src/main/resources/config/stage/application.yml b/src/main/resources/config/stage/application.yml index 1c62fa4..44496b1 100644 --- a/src/main/resources/config/stage/application.yml +++ b/src/main/resources/config/stage/application.yml @@ -111,8 +111,9 @@ amazon: secretkey: G82Bq5tCUTvSPe9InGayH8kONbtEnLxMrgzrAbCn region: us-west-2 s3: - bucket-name: metaverse-myhomeugc-stage - enabled: false + bucket-name: metaverse-admintool + cloud-front: https://d1yr1qrnuiu29u.cloudfront.net/ + enabled: true