Home [Web] Spring boot를 Docker 이미지를 이용해 AWS EC2에 배포
Post
Cancel

[Web] Spring boot를 Docker 이미지를 이용해 AWS EC2에 배포

Spring boot 어플리케이션 생성

인텔리제이를 이용해 스프링부트 어플리케이션을 생성했다. JDK 1.8 버전을 이용해 진행했다.

서버 접속이 잘 동작하는지 확인하기 위한 과정이니 간단히 ‘Hello World’를 리턴하는 Controller를 생성한다.

1
2
3
4
5
6
7
@RestController
public class HelloController {
    @RequestMapping("/hello")
    public String hello() {
        return "Hello World!!";
    }
}


Dockerfile 생성

Dockerfile을 스프링부트의 최상단에 위치하도록 생성한다.

기본적으로 아래 방식을 이용할 수 있다.

1
2
3
4
FROM openjdk:8-jdk-alpine
ARG JAR_FILE=build/libs/*.jar
COPY ${JAR_FILE} app.jar
ENTRYPOINT ["java","-jar","/app.jar"]

위와 같이 Dockerfile 생성 후 ./gradlew bootJar를 실행해 build/libs 아래에 jar 파일을 생성한다.

나의 경우 Junhong Kim님의 블로그를 보고 개발환경과 운영환경의 세팅을 달리하는 구성을 사용해보았다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
FROM adoptopenjdk:8-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:8-jdk-hotspot
COPY --from=builder build/libs/*.jar app.jar

ARG ENVIRONMENT
ENV SPRING_PROFILES_ACTIVE=${ENVIRONMENT}

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


Docker

Build

일반적인 경우

1
docker build -t image_name:target_ver

를 통해 이미지를 빌드한다.

나의 경우 ENVIRONMENT라는 argument를 이용했으니

1
docker build --build-arg ENVIRONMENT=env -t image_name:target_ver

코드를 사용했다.

Run

실행을 위해 아래 코드를 입력한다.

1
docker run -d -p 8080:8080 image_name:target_ver


DockerHub

도커 허브를 이용해 도커 이미지를 AWS에 올리려고 한다.

1
docker push 도커허브_레포지토리_이름

나는 Docker dashboard를 이용해 간단히 push 했다.


AWS

이제 AWS EC2 인스턴스에 접속한다.

Ubuntu 도커 설치 가이드를 보고 도커를 설치했다.

이후 DockerHub에 올린 이미지를 pull 했다.

1
sudo docker pull 도커허브_레포지토리_이름

도커 이미지를 잘 가져왔으니 실행해준다.

1
sudo docker run -p 8080:8080 도커허브_레포지토리_이름

-d 옵션을 통해 백그라운드로 실행할 수 있다.

1
sudo docker run -d -p 8080:8080 도커허브_레포지토리_이름


Check

인스턴스의 Public_IP:8080/hello로 접속해보았다.

spring_boot_docker_result

⬆️ “Hello World!!”가 잘 전달된 것을 확인할 수 있다.


완벽한 것은 아니지만 진행과정 기록과 공부한 내용의 정리를 위해 글을 적었다.

This post is licensed under younghwani by the author.

[Web] React app을 Docker를 통해 AWS EC2에 배포

[Web] Text-Rank 요약 API 배포해보기

Comments powered by Disqus.