CICD 배포 설정

PUROMANGA·2025년 5월 24일

기술스택

목록 보기
8/22

docker 플러그인 설치

docker hub 연동

✅ Gradle로 실행 가능한 .jar 만들기 (Spring Boot)

./gradlew bootJar

docker 파일 만들어주고 세팅

FROM openjdk:17-jdk-slim
ARG JAR_FILE=app.jar
COPY ${JAR_FILE} app.jar
ENTRYPOINT ["java", "-jar", "/app.jar"]

✅ 한 줄씩 분석

1. FROM openjdk:17-jdk-slim

기반 이미지 지정 (Base Image)
openjdk:17-jdk-slim: Java 17이 설치된 가벼운 리눅스 이미지
이 위에 너의 Spring Boot 앱을 실행시킬 거야
✔️ 결국 이건 "Java가 실행 가능한 미니 리눅스 환경"이라고 보면 됨

2. ARG JAR_FILE=app.jar

변수 선언 (Build-time Argument)
Docker 빌드 시 쓸 변수 JAR_FILE 선언
기본값: app.jar
✔️ 빌드 시 --build-arg JAR_FILE=다른이름.jar로 값 바꿀 수도 있음

3. COPY ${JAR_FILE} app.jar

로컬 파일 복사 → 컨테이너 내부로
호스트의 ${JAR_FILE} 파일을 → 컨테이너 내부에 app.jar 이름으로 복사
✔️ 실제 경로는:
로컬의 ./app.jar → 컨테이너의 /app.jar

4. ENTRYPOINT ["java", "-jar", "/app.jar"]

컨테이너 실행 시 기본으로 실행할 명령
이 컨테이너가 실행되면:

java -jar /app.jar

를 자동으로 실행함
✔️ 즉, Spring Boot 앱이 실행됨 (내장 Tomcat 포함)

만약 이때 error가 터진다면?

Redis, MYSQL 등을 DOCKER로 안 띄워둔 가능성 있기 때문에 띄워두자

이미지 빌드 후 올리기

doucker Repository

Dockerrun.aws.json 작성

후 app.zip으로 하고 s3에 업로드

이때 어떤 식으로 구상할건지에 따라 S2, S3로 나뉘어지고, Dockerrun의 json형태도 달라집니다!

S3

Elastic Beantalk

그리고 그냥 넣고 툭툭 눌러주면 끝납니다!

근데...

5월 24, 2025 15:02:55 (UTC+9)
ERROR
[Instance: i-03a5a4fd4f3339ec5] Command failed on instance. Return code: 1 Output: Engine execution has encountered an error..
5월 24, 2025 15:02:52 (UTC+9)
ERROR
Instance deployment: 'Dockerrun.aws.json' in your source bundle specifies an unsupported version. Elastic Beanstalk only supports version 1 for non compose app and version 3 for compose app. The deployment failed.

✅ 의미:
Dockerrun.aws.json 파일의 AWSEBDockerrunVersion 필드에 지원되지 않는 버전을 넣었다는 뜻.

Elastic Beanstalk은 다음만 지원합니다:

Version 1: 단일 Docker 컨테이너 (Non-Docker Compose)

Version 3: 멀티 컨테이너 Docker (Docker Compose 기반)

이 경우 압축 툴이 특이한 방식으로 ZIP 포맷을 생성했을 가능성 (예: Bandizip 특유 옵션)이 있으므로 확인하고 다시 올려보기.

Bandizip 말고 Windows 기본 압축기(마우스 우클릭 → 보내기 → 압축(zip) 폴더)

저희는 docker-compose.yml을 사용하기 때문에

② Compose 방식으로 바꾸기 (선택)
docker-compose.yml을 계속 쓰고 싶다면:

EB 환경을 "Docker Compose (Multicontainer)" 플랫폼으로 다시 생성해야 해

그리고 Dockerrun.aws.json은 제거하고 .ebextensions, docker-compose.yml 기반으로 설정

0개의 댓글