From 8b68bcdf038b9bd0d8b652d16c557ac51311bf7a Mon Sep 17 00:00:00 2001 From: swthewhite Date: Tue, 16 Dec 2025 14:57:30 +0900 Subject: [PATCH 1/2] =?UTF-8?q?chore/#39:=20DockerFile=20=EA=B0=9C?= =?UTF-8?q?=EC=84=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- slackjudge/Dockerfile | 25 +++++++++++++++++++++---- 1 file changed, 21 insertions(+), 4 deletions(-) diff --git a/slackjudge/Dockerfile b/slackjudge/Dockerfile index 9922382..b4969ea 100644 --- a/slackjudge/Dockerfile +++ b/slackjudge/Dockerfile @@ -1,9 +1,26 @@ -# Java 17 -FROM eclipse-temurin:17-jre +# Build stage +FROM eclipse-temurin:17-jdk AS builder WORKDIR /app +# Gradle wrapper 복사 +COPY gradlew . +COPY gradle gradle +RUN chmod +x gradlew + +# 의존성 캐싱을 위해 build 파일 먼저 복사 +COPY build.gradle settings.gradle ./ +RUN ./gradlew dependencies --no-daemon + +# 소스 복사 및 빌드 +COPY src src +RUN ./gradlew bootJar --no-daemon + +# Run stage +FROM eclipse-temurin:17-jre + +WORKDIR /app -COPY build/libs/batch-0.0.1-SNAPSHOT.jar app.jar +COPY --from=builder /app/build/libs/*.jar app.jar -ENTRYPOINT ["java","-jar","app.jar"] +ENTRYPOINT ["java", "-jar", "app.jar"] From 2bd6f1f338caaa73bf2994a7051daa59ab1b2c8a Mon Sep 17 00:00:00 2001 From: swthewhite Date: Tue, 16 Dec 2025 15:52:17 +0900 Subject: [PATCH 2/2] =?UTF-8?q?chore/#39:=20docker=20compose=20=EC=B6=94?= =?UTF-8?q?=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- slackjudge/docker-compose.yml | 58 +++++++++++++++++++++++++++++++++++ 1 file changed, 58 insertions(+) create mode 100644 slackjudge/docker-compose.yml diff --git a/slackjudge/docker-compose.yml b/slackjudge/docker-compose.yml new file mode 100644 index 0000000..7332298 --- /dev/null +++ b/slackjudge/docker-compose.yml @@ -0,0 +1,58 @@ +services: + batch: + build: . + env_file: + - path: .env + required: false + environment: + SPRING_PROFILES_ACTIVE: ${SPRING_PROFILES_ACTIVE:-local} + POSTGRES_HOST: ${POSTGRES_HOST:-postgres} + POSTGRES_PORT: ${POSTGRES_PORT:-5432} + POSTGRES_DATABASE: ${POSTGRES_DATABASE:-app} + POSTGRES_USER: ${POSTGRES_USER:-postgres} + POSTGRES_PASSWORD: ${POSTGRES_PASSWORD:-postgres} + MONGO_URI: ${MONGO_URI:-mongodb://mongo:mongo@mongodb:27017} + MONGO_DATABASE: ${MONGO_DATABASE:-app} + MONGO_USER_NAME: ${MONGO_USER_NAME:-mongo} + MONGO_PASSWORD: ${MONGO_PASSWORD:-mongo} + SLACK_WEBHOOK_URL: ${SLACK_WEBHOOK_URL:-} + entrypoint: ["/bin/sh", "-c", "java -jar app.jar $(date -u +'%Y-%m-%dT%H:%M:%SZ')"] + + # 로컬 DB 컨테이너 (--profile local 옵션 사용 시에만 실행) + postgres: + profiles: [local] + image: postgres:17 + ports: + - "5432:5432" + environment: + POSTGRES_DB: app + POSTGRES_USER: postgres + POSTGRES_PASSWORD: postgres + volumes: + - postgres_data:/var/lib/postgresql/data + healthcheck: + test: ["CMD-SHELL", "pg_isready -U postgres"] + interval: 10s + timeout: 5s + retries: 5 + + mongodb: + profiles: [local] + image: mongo:8.0 + ports: + - "27017:27017" + environment: + MONGO_INITDB_ROOT_USERNAME: mongo + MONGO_INITDB_ROOT_PASSWORD: mongo + MONGO_INITDB_DATABASE: app + volumes: + - mongodb_data:/data/db + healthcheck: + test: ["CMD", "mongosh", "--eval", "db.adminCommand('ping')"] + interval: 10s + timeout: 5s + retries: 5 + +volumes: + postgres_data: + mongodb_data: