본문 바로가기

⌛ AWS 인프라 구성하기 (MiniProject)/✅ 개발환경 구성 (EKS)

4. 수동으로 Source 빌드 후 배포하기

728x90
반응형

# 예제 애플리케이션으로 개발한 게시판 프로그램

# 해당 게시판 프로그램을 dockerfile로 작성 후 빌드, ECR에 업로드를 수행 한다.

1. 소스코드 확인

해당 소스코드는 SpringBoot + mustache + html + javascript를 활용하여 개발 되었다.

해당 소스코드를 mobaxterm를 활용하여 BastionHost 서버로 옮긴다.

2. 빌드를 위한 dockerfile 작성

vim dockerfile 명령어를 통해 파일을 작성 한다.

FROM adoptopenjdk:11-jdk-hotspot AS builder
COPY gradlew .
COPY gradle gradle
COPY build.gradle .
COPY settings.gradle .
COPY src src
RUN chmod +X ./gradlew
RUN ./gradlew bootJar

FROM adoptopenjdk:11-jdk-hotspot
COPY --from=builder build/libs/*.jar app.jar

EXPOSE 8080
ENTRYPOINT ["java", "-jar", "/app.jar"]

생성한 dockerfile을 기반으로 이미지를 생성하기 위해 아래의 명령어를 실행 한다.

- dockerfile의 위치는 아래와 같이 해당 소스코드 안에 위치 해야 한다.

- dockerfile 실행

# 기본 명령어
sudo docker build -t {생성할 이미지 명} .

# 예시
sudo docker build -t notice-board .

- gradlew 오류 발생 시 해결 사항 (아래와 같이 오류가 발생)

아래의 명령어를 입력하여 gradlew의 실행 권한을 부여한다.

chmod 755 gradlew

3. 이미지가 정상적으로 생성되었는지 확인하기

sudo docker images

아래와 같이 조회되는것을 확인 할 수 있다.

$ sudo docker images
REPOSITORY     TAG              IMAGE ID       CREATED          SIZE
notice-board   latest           610d724858f7   11 minutes ago   477MB
<none>         <none>           4e05b9cca629   11 minutes ago   812MB
<none>         <none>           7daca6813822   14 minutes ago   437MB
adoptopenjdk   11-jdk-hotspot   fd22b5791853   7 months ago     437MB

4. docker image 실행하여 테스트 하기

이미지 조회하기

sudo docker images
REPOSITORY     TAG              IMAGE ID       CREATED          SIZE
notice-board   latest           610d724858f7   25 minutes ago   477MB
<none>         <none>           4e05b9cca629   26 minutes ago   812MB
<none>         <none>           7daca6813822   29 minutes ago   437MB
adoptopenjdk   11-jdk-hotspot   fd22b5791853   7 months ago     437MB

이미지 실행하기

sudo docker run --name notice-board-01 -d -p 8080:8080 notice-board

실행한 이미지 확인하기

sudo docker ps -a
CONTAINER ID   IMAGE          COMMAND                  CREATED             STATUS                           PORTS                                       NAMES
9468b7fe02e6   notice-board   "java -jar /app.jar"     33 minutes ago      Up 33 minutes                    0.0.0.0:8080->8080/tcp, :::8080->8080/tcp   notice-board-01

5. 웹페이지 확인하기

BastionHost의 퍼블릭 ip로 접근하면 아래와 같이 실행된 애플리케이션을 확인 할 수 있다.

728x90
반응형