Skip to content

Conversation

@move-hoon
Copy link
Member

@move-hoon move-hoon commented Jul 2, 2025

🔗 관련 이슈

📘 작업 유형

  • ✨ Feature (기능 추가)
  • 🐞 Bugfix (버그 수정)
  • 🔧 Refactor (코드 리팩토링)
  • ⚙️ Chore (환경 설정)
  • 📝 Docs (문서 작성 및 수정)
  • ✅ Test (기능 테스트)
  • 🎨 style (코드 스타일 수정)

📙 작업 내역

  • Dockerfile 세팅 및 CI/CD스크립트 리팩토링을 진행햇습니다.

🧪 테스트 내역

  • 브라우저/기기에서 동작 확인
  • 엣지 케이스 테스트 완료
  • 기존 기능 영향 없음

🎨 스크린샷 또는 시연 영상 (선택)

기능 미리보기 기능 미리보기
기능 설명 기능 설명

✅ PR 체크리스트

  • 커밋 메시지가 명확합니다
  • PR 제목이 컨벤션에 맞습니다
  • 관련 이슈 번호를 작성했습니다
  • 기능이 정상적으로 작동합니다
  • 불필요한 코드를 제거했습니다

💬 추가 설명 or 리뷰 포인트 (선택)

  • ..

Summary by CodeRabbit

  • Chores

    • CI/CD 워크플로우가 통합되어 빌드, 이미지 생성, 푸시 및 배포 작업이 하나의 작업으로 간소화되었습니다.
    • 빌드 과정에서 Java 및 Gradle 설정이 제거되고, Docker 중심의 빌드 방식으로 전환되었습니다.
    • 글로벌 환경 변수(MODULE)가 추가되어 Docker 빌드 시 활용됩니다.
    • 빌드 타임아웃이 조정되고, 배포 스크립트가 최적화되었습니다.
  • New Features

    • Java 애플리케이션용 멀티스테이지 Dockerfile과 개발용 Dockerfile이 새롭게 도입되었습니다.

@move-hoon move-hoon self-assigned this Jul 2, 2025
@coderabbitai
Copy link

coderabbitai bot commented Jul 2, 2025

📝 Walkthrough

"""

Walkthrough

CI/CD 워크플로우가 리팩토링되어 기존의 단일 build-and-push 작업이 build-push-and-deploy 단일 작업으로 통합되었습니다. 배포 및 개발 환경용 멀티스테이지 Dockerfile이 각각 새로 추가되었으며, 환경 변수 MODULE과 빌드 아규먼트가 도입되어 Docker 이미지 빌드 과정에 반영되었습니다.

Changes

파일/경로 변경 요약
.github/workflows/dev-ci-cd.yml
.github/workflows/prod-ci-cd.yml
CI/CD 워크플로우 작업명 변경 및 통합, Java/Gradle 빌드 단계 제거, Docker Buildx 설정 및 Docker Hub 로그인 조기 수행, 환경 변수 MODULE 추가, 배포 스크립트 내 경로 및 태그 참조 방식 변경
Dockerfile
Dockerfile-dev
배포 및 개발 환경용 멀티스테이지 Dockerfile 신규 도입, 빌드 아규먼트 MODULE 지원, jar 아티팩트 및 secret 복사, JVM 옵션 지정 실행 엔트리포인트 설정

Sequence Diagram(s)

sequenceDiagram
    participant Developer
    participant GitHub Actions
    participant Docker Hub
    participant Deployment Server

    Developer->>GitHub Actions: 코드 푸시/PR 트리거
    GitHub Actions->>GitHub Actions: Docker Buildx 설정 및 로그인
    GitHub Actions->>Docker Hub: Docker 이미지 빌드 및 푸시
    GitHub Actions->>Deployment Server: SSH로 배포 스크립트 실행 (이미지 태그 참조)
Loading

Assessment against linked issues

Objective Addressed Explanation
배포 환경을 위한 Dockerfile을 구현 (#19)

Suggested reviewers

  • minwoo1999
    """

📜 Recent review details

Configuration used: .coderabbit.yaml
Review profile: ASSERTIVE
Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 23b7b96 and 2524890.

📒 Files selected for processing (4)
  • .github/workflows/dev-ci-cd.yml (5 hunks)
  • .github/workflows/prod-ci-cd.yml (5 hunks)
  • Dockerfile (1 hunks)
  • Dockerfile-dev (1 hunks)
🧰 Additional context used
🧠 Learnings (1)
📓 Common learnings
Learnt from: hoonyworld
PR: YAPP-Github/26th-App-Team-1-BE#17
File: .github/workflows/ci-pr.yml:8-9
Timestamp: 2025-07-01T09:50:45.498Z
Learning: hoonyworld 사용자는 Naver 코드 포맷터를 사용하며, 이 포맷터는 YAML 배열의 대괄호 내부에 자동으로 여분의 공백을 추가하는 특성이 있음.
🪛 Checkov (3.2.334)
Dockerfile

[LOW] 1-34: Ensure that HEALTHCHECK instructions have been added to container images

(CKV_DOCKER_2)


[LOW] 1-34: Ensure that a user for the container has been created

(CKV_DOCKER_3)

🔇 Additional comments (9)
Dockerfile (1)

1-19: 빌드 스테이지 구현이 우수합니다.

의존성 캐싱 최적화를 위한 단계별 복사 전략이 잘 구현되어 있어 Docker 빌드 성능을 크게 향상시킬 것입니다. Gradle 의존성을 먼저 다운로드하고 이후 소스코드를 복사하는 접근 방식이 적절합니다.

Dockerfile-dev (1)

1-34: 개발용 Dockerfile도 메인 Dockerfile과 동일한 우수한 구조를 가지고 있습니다.

멀티스테이지 빌드와 의존성 캐싱 최적화가 잘 구현되어 있고, ARG MODULE 재선언 및 구체적인 JAR 매칭 패턴도 적절히 적용되었습니다.

.github/workflows/prod-ci-cd.yml (4)

15-15: MODULE 환경변수 추가로 모듈화된 빌드 지원이 개선되었습니다.

Docker 빌드 과정에서 특정 모듈을 대상으로 하는 빌드 전략이 명확해졌습니다.


18-21: 작업 통합 및 환경 설정이 적절합니다.

빌드, 푸시, 배포를 단일 작업으로 통합하고 production 환경을 명시적으로 설정한 것이 워크플로우를 단순화하고 관리하기 쉽게 만들었습니다. 타임아웃도 Docker 빌드 시간을 고려하여 적절히 조정되었습니다.


57-57: Dockerfile 경로 명시로 명확성이 향상되었습니다.

./Dockerfile 경로를 명시적으로 지정하여 빌드 컨텍스트가 명확해졌습니다.


76-77: 배포 스크립트의 메타데이터 참조 변경이 적절합니다.

job outputs에서 step outputs로 변경하여 단일 작업 구조에 맞게 올바르게 조정되었습니다.

.github/workflows/dev-ci-cd.yml (3)

15-15: 모듈화된 빌드 환경 설정이 우수합니다.

프로덕션 워크플로우와 일관된 MODULE 환경변수 설정으로 통합된 빌드 전략을 구현했습니다.


18-21: 개발 환경에 적합한 워크플로우 구조입니다.

development 환경 설정과 20분 타임아웃으로 개발 환경의 요구사항에 맞게 조정되었습니다.


56-63: Docker 중심 빌드로의 전환이 적절합니다.

Dockerfile 경로 명시와 MODULE build-args 전달이 올바르게 구현되어 있어 새로운 Docker 빌드 전략과 잘 통합되었습니다.


Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share
🪧 Tips

Chat

There are 3 ways to chat with CodeRabbit:

  • Review comments: Directly reply to a review comment made by CodeRabbit. Example:
    • I pushed a fix in commit <commit_id>, please review it.
    • Explain this complex logic.
    • Open a follow-up GitHub issue for this discussion.
  • Files and specific lines of code (under the "Files changed" tab): Tag @coderabbitai in a new review comment at the desired location with your query. Examples:
    • @coderabbitai explain this code block.
    • @coderabbitai modularize this function.
  • PR comments: Tag @coderabbitai in a new PR comment to ask questions about the PR branch. For the best results, please provide a very specific query, as very limited context is provided in this mode. Examples:
    • @coderabbitai gather interesting stats about this repository and render them as a table. Additionally, render a pie chart showing the language distribution in the codebase.
    • @coderabbitai read src/utils.ts and explain its main purpose.
    • @coderabbitai read the files in the src/scheduler package and generate a class diagram using mermaid and a README in the markdown format.
    • @coderabbitai help me debug CodeRabbit configuration file.

Support

Need help? Create a ticket on our support page for assistance with any issues or questions.

Note: Be mindful of the bot's finite context window. It's strongly recommended to break down tasks such as reading entire modules into smaller chunks. For a focused discussion, use review comments to chat about specific files and their changes, instead of using the PR comments.

CodeRabbit Commands (Invoked using PR comments)

  • @coderabbitai pause to pause the reviews on a PR.
  • @coderabbitai resume to resume the paused reviews.
  • @coderabbitai review to trigger an incremental review. This is useful when automatic reviews are disabled for the repository.
  • @coderabbitai full review to do a full review from scratch and review all the files again.
  • @coderabbitai summary to regenerate the summary of the PR.
  • @coderabbitai generate docstrings to generate docstrings for this PR.
  • @coderabbitai generate sequence diagram to generate a sequence diagram of the changes in this PR.
  • @coderabbitai resolve resolve all the CodeRabbit review comments.
  • @coderabbitai configuration to show the current CodeRabbit configuration for the repository.
  • @coderabbitai help to get help.

Other keywords and placeholders

  • Add @coderabbitai ignore anywhere in the PR description to prevent this PR from being reviewed.
  • Add @coderabbitai summary to generate the high-level summary at a specific location in the PR description.
  • Add @coderabbitai anywhere in the PR title to generate the title automatically.

Documentation and Community

  • Visit our Documentation for detailed information on how to use CodeRabbit.
  • Join our Discord Community to get help, request features, and share feedback.
  • Follow us on X/Twitter for updates and announcements.

Copy link

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 6

🔭 Outside diff range comments (1)
.github/workflows/dev-ci-cd.yml (1)

108-113: IMAGE_TAG 변수에 개행 포함 가능성
needs.build-and-push.outputs.tags는 여러 줄 값을 반환합니다. dev 서버 스크립트에서 파싱 오류가 생길 수 있으니 prod와 동일하게 첫 줄만 사용하세요.

- export IMAGE_TAG="${{ needs.build-and-push.outputs.tags }}"
+ export IMAGE_TAG="$(echo "${{ needs.build-and-push.outputs.tags }}" | head -n1)"
♻️ Duplicate comments (1)
Dockerfile-dev (1)

9-12: ARG MODULE 재선언 누락으로 동일 문제 반복
Dockerfile과 동일한 이유로 COPY 단계가 실패할 수 있습니다. 동일한 수정이 필요합니다.

📜 Review details

Configuration used: .coderabbit.yaml
Review profile: ASSERTIVE
Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between d4c1705 and e4f6797.

📒 Files selected for processing (4)
  • .github/workflows/dev-ci-cd.yml (3 hunks)
  • .github/workflows/prod-ci-cd.yml (4 hunks)
  • Dockerfile (1 hunks)
  • Dockerfile-dev (1 hunks)
🧰 Additional context used
🧠 Learnings (1)
📓 Common learnings
Learnt from: hoonyworld
PR: YAPP-Github/26th-App-Team-1-BE#17
File: .github/workflows/ci-pr.yml:8-9
Timestamp: 2025-07-01T09:50:45.498Z
Learning: hoonyworld 사용자는 Naver 코드 포맷터를 사용하며, 이 포맷터는 YAML 배열의 대괄호 내부에 자동으로 여분의 공백을 추가하는 특성이 있음.
🪛 Checkov (3.2.334)
Dockerfile

[LOW] 1-12: Ensure that HEALTHCHECK instructions have been added to container images

(CKV_DOCKER_2)


[LOW] 1-12: Ensure that a user for the container has been created

(CKV_DOCKER_3)

🔇 Additional comments (2)
Dockerfile (1)

11-11: *.jar 와일드카드가 여러 아티팩트를 매칭할 가능성
멀티 모듈 프로젝트이거나 original-·plain- JAR 등이 함께 존재할 경우 가장 마지막 파일이 덮어씌워질 위험이 있습니다.
경로를 명시적으로 지정하거나 *boot.jar 등으로 좁혀 주세요.

.github/workflows/prod-ci-cd.yml (1)

111-115: IMAGE_TAG 변수 파싱은 dev/prod 간 일관성 유지
dev에서 수정 제안한 것과 동일하게, prod에서도 tags 출력이 다중 줄일 수 있지만 이미 head -n1을 사용 중입니다. dev 워크플로 수정 후 두 환경이 동일한 패턴을 갖도록 확인 바랍니다.

Dockerfile Outdated
Comment on lines 8 to 12
# Run stage
FROM openjdk:21-slim
WORKDIR /app
COPY --from=build /app/${MODULE}/build/libs/*.jar app.jar
ENTRYPOINT ["java", "-jar", "app.jar"]
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🧹 Nitpick (assertive)

런타임 스테이지 보안 강화를 위해 비-root 사용자 및 HEALTHCHECK 추가 권장

 FROM openjdk:21-slim
+RUN useradd --system --uid 10001 appuser \
+  && mkdir /app && chown -R appuser:appuser /app
 WORKDIR /app
 COPY --from=build /app/${MODULE}/build/libs/*.jar app.jar
+USER appuser
+HEALTHCHECK --interval=30s --timeout=3s CMD curl -f http://localhost:8080/actuator/health || exit 1
 ENTRYPOINT ["java", "-jar", "app.jar"]
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
# Run stage
FROM openjdk:21-slim
WORKDIR /app
COPY --from=build /app/${MODULE}/build/libs/*.jar app.jar
ENTRYPOINT ["java", "-jar", "app.jar"]
# Run stage
FROM openjdk:21-slim
RUN useradd --system --uid 10001 appuser \
&& mkdir /app && chown -R appuser:appuser /app
WORKDIR /app
COPY --from=build /app/${MODULE}/build/libs/*.jar app.jar
USER appuser
HEALTHCHECK --interval=30s --timeout=3s CMD curl -f http://localhost:8080/actuator/health || exit 1
ENTRYPOINT ["java", "-jar", "app.jar"]
🧰 Tools
🪛 Checkov (3.2.334)

[LOW] 1-12: Ensure that HEALTHCHECK instructions have been added to container images

(CKV_DOCKER_2)


[LOW] 1-12: Ensure that a user for the container has been created

(CKV_DOCKER_3)

🤖 Prompt for AI Agents
In Dockerfile lines 8 to 12, enhance runtime stage security by adding a non-root
user to run the application instead of root, and include a HEALTHCHECK
instruction to monitor container health. Create a user with limited permissions,
switch to that user before running the app, and define a HEALTHCHECK command
that periodically verifies the app is responsive.

Dockerfile-dev Outdated
Comment on lines 1 to 12
# Build stage
FROM gradle:8.7-jdk21 AS build
ARG MODULE=apis
WORKDIR /app
COPY . .
RUN ./gradlew :${MODULE}:bootJar --no-daemon

# Run stage
FROM openjdk:21-slim
WORKDIR /app
COPY --from=build /app/${MODULE}/build/libs/*.jar app.jar
ENTRYPOINT ["java", "-jar", "app.jar"]
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🧹 Nitpick (assertive)

개발용 Dockerfile도 비-root 사용자·HEALTHCHECK 적용 권장
로컬/CI 환경이라도 최소한의 보안 수칙을 동일하게 유지하는 편이 좋습니다.

🤖 Prompt for AI Agents
In Dockerfile-dev lines 1 to 12, the Dockerfile currently runs as root and lacks
a HEALTHCHECK instruction. To improve security and reliability, add a non-root
user and switch to it before running the application. Also, include a
HEALTHCHECK instruction that periodically verifies the app's health, such as by
checking the HTTP endpoint or process status. This ensures better security
practices and container health monitoring even in development environments.

Comment on lines 73 to 79
id: meta
uses: docker/metadata-action@v5
with:
images: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}
tags: |
type=raw,value=development-latest
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🧹 Nitpick (assertive)

태그 전략 개선 권장 – development-latest 단일 태그는 충돌 위험
동시 커밋에서 같은 태그가 덮어써지면 롤백·디버깅이 어려워집니다. SHA 짧은값 또는 날짜를 추가해 고유 태그를 병행 저장하는 방식을 고려해 주세요.

예시:

tags: |
  type=raw,value=development-${{ github.sha }}
  type=raw,value=development-latest
🤖 Prompt for AI Agents
In .github/workflows/dev-ci-cd.yml around lines 73 to 79, the current tagging
strategy uses only the single tag "development-latest," which risks tag
collisions during concurrent commits. To fix this, modify the tags input to
include a unique tag using the short SHA or date along with
"development-latest." For example, add a tag like "development-${{ github.sha
}}" before "development-latest" to ensure each build has a unique tag for better
rollback and debugging.

Comment on lines 49 to 50
- name: Run full Gradle build and test
run: ./gradlew build --parallel --build-cache
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🛠️ Refactor suggestion

Gradle 컴파일이 두 번 발생 → 빌드 시간 불필요 증가
build 잡에서 이미 ./gradlew build를 수행했지만, docker build 단계가 다시 소스 전체를 복사해 내부에서 Gradle 빌드를 반복합니다.
아티팩트를 업로드‧다운로드해서 Docker 컨텍스트로 넘기거나, --build-arg BUILT_JAR 방식으로 한 번만 빌드하도록 리팩터링하면 5~7 분 단축됩니다.

🤖 Prompt for AI Agents
In .github/workflows/dev-ci-cd.yml around lines 49 to 50, the Gradle build is
executed twice, causing unnecessary build time increase. Refactor the workflow
to run the Gradle build only once by uploading the built artifacts after the
initial build step and then downloading them in the Docker build step, or pass
the built JAR as a build argument using --build-arg BUILT_JAR. This avoids
copying the entire source and rebuilding inside the Docker context, reducing
build time by 5 to 7 minutes.

Comment on lines +93 to 95
build-args: |
MODULE=${{ env.MODULE }}
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🧹 Nitpick (assertive)

build-args에 추가 인자 여지 확보
현재 MODULE만 전달하지만, JAR 이름 또는 빌드 프로파일 등 추가 인자가 필요해질 수 있습니다. 다중 줄 블록을 유지하면서 주석으로 향후 확장성을 명시해 두면 유지보수에 도움이 됩니다.

🤖 Prompt for AI Agents
In .github/workflows/prod-ci-cd.yml around lines 93 to 95, the build-args
currently only pass the MODULE variable. To allow future expansion for
additional arguments like JAR name or build profile, keep the multi-line block
format and add a comment above or within the build-args section indicating that
more build arguments can be added here later. This improves maintainability by
explicitly noting the potential for extension.

Copy link

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 2

♻️ Duplicate comments (2)
Dockerfile (1)

9-13: 비-root 사용자·HEALTHCHECK 추가 권장
보안 및 운영 신뢰성을 위해 런타임 스테이지에서 non-root 사용자로 전환하고 헬스체크를 설정하세요. 과거에도 동일 제안을 드린 바 있습니다.

 FROM openjdk:21-slim
 ARG MODULE=apis
 WORKDIR /app
+RUN useradd --system --uid 10001 appuser \
+  && chown -R appuser:appuser /app
 COPY --from=build /app/${MODULE}/build/libs/*SNAPSHOT.jar app.jar
+USER appuser
+HEALTHCHECK --interval=30s --timeout=3s CMD curl -f http://localhost:8080/actuator/health || exit 1
 ENTRYPOINT ["java", "-jar", "app.jar"]
Dockerfile-dev (1)

9-13: 비-root 사용자·HEALTHCHECK 누락
운영-용 Dockerfile과 동일한 보안/가용성 수칙을 개발 이미지에도 적용하는 편이 좋습니다.

 FROM openjdk:21-slim
 ARG MODULE=apis
 WORKDIR /app
+RUN useradd --system --uid 10001 appuser \
+  && chown -R appuser:appuser /app
 COPY --from=build /app/${MODULE}/build/libs/*SNAPSHOT.jar app.jar
+USER appuser
+HEALTHCHECK --interval=30s --timeout=3s CMD curl -f http://localhost:8080/actuator/health || exit 1
 ENTRYPOINT ["java", "-jar", "app.jar"]
📜 Review details

Configuration used: .coderabbit.yaml
Review profile: ASSERTIVE
Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between e4f6797 and 23b7b96.

📒 Files selected for processing (2)
  • Dockerfile (1 hunks)
  • Dockerfile-dev (1 hunks)
🧰 Additional context used
🧠 Learnings (1)
📓 Common learnings
Learnt from: hoonyworld
PR: YAPP-Github/26th-App-Team-1-BE#17
File: .github/workflows/ci-pr.yml:8-9
Timestamp: 2025-07-01T09:50:45.498Z
Learning: hoonyworld 사용자는 Naver 코드 포맷터를 사용하며, 이 포맷터는 YAML 배열의 대괄호 내부에 자동으로 여분의 공백을 추가하는 특성이 있음.
🪛 Checkov (3.2.334)
Dockerfile

[LOW] 1-13: Ensure that HEALTHCHECK instructions have been added to container images

(CKV_DOCKER_2)


[LOW] 1-13: Ensure that a user for the container has been created

(CKV_DOCKER_3)

🔇 Additional comments (1)
Dockerfile (1)

10-10: ARG 재선언 문제 해결 👍
ARG MODULE를 런타임 스테이지에서도 다시 선언해 지난 코멘트의 빌드 실패 가능성을 제거했습니다.

@sonarqubecloud
Copy link

sonarqubecloud bot commented Jul 2, 2025

@move-hoon move-hoon changed the title chore: Dockerfile 세팅 및 CI/CD스크립트 리팩토링 chore: Dockerfile 세팅 및 CI/CD스크립트 리팩터링 Jul 2, 2025
@move-hoon move-hoon merged commit d2ebb29 into develop Jul 3, 2025
5 checks passed
Copy link
Member

@minwoo1999 minwoo1999 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

GOOD

Comment on lines +6 to +16
# 의존성 캐싱 최적화를 위한 단계별 복사
# 1. 의존성 관련 파일만 먼저 복사
COPY build.gradle settings.gradle ./
COPY ${MODULE}/build.gradle ./${MODULE}/

# 2. 소스코드 없이 의존성만 다운로드
RUN ./gradlew :${MODULE}:dependencies --no-daemon

# 3. 소스코드 전체 복사
COPY . .

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

궁금한게 의존성 캐싱처리했을 때와 캐싱하지 않았을 경우 빌드차이속도가 어느정도 나는지 궁금하네요!
혹시 한번 테스트가능할까요!?

# JVM 실행 설정
# - Xms512m: 초기 힙 메모리 512MB
# - Xmx1g: 최대 힙 메모리 1GB
ENTRYPOINT ["java", "-Xms512m", "-Xmx1g", "-jar", "app.jar"]
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

현재 EC2 기본 인스턴스(1GB 메모리)에서 MySQL, Redis, Nginx, 그리고 Java 기반 애플리케이션까지 함께 구동하고자 하는 상황인데, 메모리가 다소 부족할 수 있을 것 같아 별도로 스왑 메모리를 설정해놓았는데 제대로 버틸지 의문이긴하네요 256MB로 조금이나마 작게 가져가는건 어떨까요 너무적을까요!?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[BOOK-88/chore] 배포 환경을 위한 Dockerfile 구현

3 participants