This commit is contained in:
dabeeo
2026-04-20 15:29:44 +09:00
parent 4fbfb31e97
commit 9fa549285f
4 changed files with 224 additions and 188 deletions

View File

@@ -18,10 +18,7 @@ services:
- SPRING_PROFILES_ACTIVE=dev - SPRING_PROFILES_ACTIVE=dev
- TZ=Asia/Seoul - TZ=Asia/Seoul
volumes: volumes:
- /mnt/nfs_share/images:/app/original-images - /data/training:/data/training
- /mnt/nfs_share/model_output:/app/model-outputs
- /mnt/nfs_share/train_dataset:/app/train-dataset
- /home/kcomu/data:/home/kcomu/data
- /var/run/docker.sock:/var/run/docker.sock - /var/run/docker.sock:/var/run/docker.sock
networks: networks:
- kamco-cds - kamco-cds

View File

@@ -18,8 +18,6 @@ services:
- SPRING_PROFILES_ACTIVE=prod - SPRING_PROFILES_ACTIVE=prod
- TZ=Asia/Seoul - TZ=Asia/Seoul
volumes: volumes:
- ./app/model_output:/app/model-outputs
- ./app/train_dataset:/app/train-dataset
- /var/run/docker.sock:/var/run/docker.sock - /var/run/docker.sock:/var/run/docker.sock
networks: networks:
- kamco-cds - kamco-cds

View File

@@ -15,10 +15,11 @@ http {
error_log /var/log/nginx/error.log warn; error_log /var/log/nginx/error.log warn;
sendfile on; sendfile on;
keepalive_timeout 65; keepalive_timeout 65;
# 업로드 파일 크기 제한 (10GB) # 업로드 파일 크기 / 타임아웃 (10GB, 10분)
client_max_body_size 10G; client_max_body_size 10G;
client_body_timeout 600s;
# Upstream 설정 # Upstream 설정
upstream api_backend { upstream api_backend {
@@ -35,12 +36,13 @@ http {
server_name api.train-kamco.com train-kamco.com; server_name api.train-kamco.com train-kamco.com;
# 모든 HTTP 요청을 HTTPS로 리다이렉트 # 모든 HTTP 요청을 HTTPS로 리다이렉트
return 301 https://$server_name$request_uri; return 301 https://$host$request_uri;
} }
# HTTPS 서버 설정 # HTTPS 서버 설정
server { server {
listen 443 ssl http2; listen 443 ssl;
http2 on;
server_name api.train-kamco.com; server_name api.train-kamco.com;
# SSL 인증서 설정 (사설 인증서 - 멀티 도메인) # SSL 인증서 설정 (사설 인증서 - 멀티 도메인)
@@ -64,8 +66,19 @@ http {
add_header X-Content-Type-Options "nosniff" always; add_header X-Content-Type-Options "nosniff" always;
add_header X-XSS-Protection "1; mode=block" always; add_header X-XSS-Protection "1; mode=block" always;
# CORS 헤더
add_header Access-Control-Allow-Origin "https://train-kamco.com" always;
add_header Access-Control-Allow-Methods "GET, POST, PUT, DELETE, PATCH, OPTIONS" always;
add_header Access-Control-Allow-Headers "Authorization, Content-Type, Cookie, X-Requested-With" always;
add_header Access-Control-Allow-Credentials "true" always;
# 프록시 설정 # 프록시 설정
location / { location / {
# OPTIONS preflight 처리
if ($request_method = OPTIONS) {
return 204;
}
proxy_pass http://api_backend; proxy_pass http://api_backend;
proxy_http_version 1.1; proxy_http_version 1.1;
@@ -81,16 +94,14 @@ http {
proxy_set_header Cookie $http_cookie; proxy_set_header Cookie $http_cookie;
proxy_set_header Authorization $http_authorization; proxy_set_header Authorization $http_authorization;
# 타임아웃 설정 (대용량 파일 업로드 지원) # 타임아웃 설정 (10분)
proxy_connect_timeout 300s; proxy_connect_timeout 600s;
proxy_send_timeout 300s; proxy_send_timeout 600s;
proxy_read_timeout 300s; proxy_read_timeout 600s;
# 버퍼 설정 # 대용량 업로드: 버퍼링 없이 백엔드로 스트리밍
proxy_buffering on; proxy_request_buffering off;
proxy_buffer_size 4k; proxy_buffering off;
proxy_buffers 8 4k;
proxy_busy_buffers_size 8k;
} }
# 헬스체크 엔드포인트 # 헬스체크 엔드포인트
@@ -102,7 +113,8 @@ http {
# HTTPS 서버 설정 - Next.js Web Application # HTTPS 서버 설정 - Next.js Web Application
server { server {
listen 443 ssl http2; listen 443 ssl;
http2 on;
server_name train-kamco.com; server_name train-kamco.com;
# SSL 인증서 설정 (사설 인증서 - 멀티 도메인) # SSL 인증서 설정 (사설 인증서 - 멀티 도메인)
@@ -142,10 +154,14 @@ http {
proxy_pass_request_headers on; proxy_pass_request_headers on;
proxy_set_header Cookie $http_cookie; proxy_set_header Cookie $http_cookie;
# 타임아웃 설정 # 타임아웃 설정 (10분)
proxy_connect_timeout 300s; proxy_connect_timeout 600s;
proxy_send_timeout 300s; proxy_send_timeout 600s;
proxy_read_timeout 300s; proxy_read_timeout 600s;
# 대용량 업로드: 버퍼링 없이 백엔드로 스트리밍
proxy_request_buffering off;
proxy_buffering off;
} }
# 프록시 설정 # 프록시 설정
@@ -164,10 +180,10 @@ http {
proxy_set_header Upgrade $http_upgrade; proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade"; proxy_set_header Connection "upgrade";
# 타임아웃 설정 # 타임아웃 설정 (10분)
proxy_connect_timeout 600s; proxy_connect_timeout 600s;
proxy_send_timeout 600s; proxy_send_timeout 600s;
proxy_read_timeout 600s; proxy_read_timeout 600s;
# 버퍼 설정 # 버퍼 설정
proxy_buffering on; proxy_buffering on;

View File

@@ -30,20 +30,45 @@ token:
swagger: swagger:
local-port: 8080 local-port: 8080
# file:
# dataset-dir: /home/kcomu/data/request/
# dataset-tmp-dir: ${file.dataset-dir}tmp/
# pt-path: /home/kcomu/data/response/v6-cls-checkpoints/
# pt-FileName: yolov8_6th-6m.pt
# train:
# docker:
# image: kamco-cd-train:latest
# base_path: /home/kcomu/data
# request_dir: ${train.docker.base_path}/request
# response_dir: ${train.docker.base_path}/response
# symbolic_link_dir: ${train.docker.base_path}/tmp
# container_prefix: kamco-cd-train
# shm_size: 16g
# ipc_host: true
file: file:
dataset-dir: /home/kcomu/data/request/ dataset-dir: /data/training/request/
dataset-tmp-dir: ${file.dataset-dir}tmp/ dataset-tmp-dir: ${file.dataset-dir}tmp/
pt-path: /home/kcomu/data/response/v6-cls-checkpoints/ pt-path: /data/training/response/v6-cls-checkpoints/
pt-FileName: yolov8_6th-6m.pt pt-FileName: yolov8_6th-6m.pt
train: train:
docker: docker:
image: kamco-cd-train:latest image: kamco-cd-train:latest
base_path: /home/kcomu/data base_path: /data/training
request_dir: ${train.docker.base_path}/request request_dir: ${train.docker.base_path}/request
response_dir: ${train.docker.base_path}/response response_dir: ${train.docker.base_path}/response
symbolic_link_dir: ${train.docker.base_path}/tmp symbolic_link_dir: ${train.docker.base_path}/tmp
container_prefix: kamco-cd-train container_prefix: kamco-cd-train
shm_size: 16g shm_size: 16g
ipc_host: true ipc_host: true
hyper:
parameter:
gpus: 1
gpu-ids: 0
batch-size: 10