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로 접속해보았다.
⬆️ “Hello World!!”가 잘 전달된 것을 확인할 수 있다.
완벽한 것은 아니지만 진행과정 기록과 공부한 내용의 정리를 위해 글을 적었다.
Comments powered by Disqus.