본문 바로가기

개발스터디/MSA 스터디 (22년)

[MSA 1.0] (6) Spring Cloud 어플리케이션을 Docker file로 배포하기

docker을 이용해서 Spring Cloud Application을 배포하는 방법에 대해 알아보자

 

 

1. 도커? 

도커는 어플리케이션을 컨테이너화 해주는 툴이다.

https://themapisto.tistory.com/11

 

[서버] 서버와 피씨의 차이점

서버와 PC의 차이점이 뭘까요? 우선 구글에 서버라고 검색을 해보면, 서버(영어: server)는 클라이언트에게 네트워크를 통해 정보나 서비스를 제공하는 컴퓨터 시스템으로 컴퓨터 프로그램(server pr

themapisto.tistory.com

왜 컨테이너화를 하지?

컨테이너화를 하는 이유에 대해서 간략하게 설명하자면 기본적인 서버에 대한 지식이 필요할 것이다. 위 글을 참고하도록 한다. 

우리 모두가 서버에 대한 지식을 갖추었다고 생각하고, 내 경험을 비롯하여 컨테이너에 대해서 설명해보도록 하겠다.

내가 2018년 가장 처음 회사에 들어갔을때 가장 먼저 한 일은 내 블로그에 기록도 남아있겠지만 https://themapisto.tistory.com/2 

 

블로그 1일차: Linux WAS 서버 만들기(1)

신입개발자로 입사한지 49일차!! 처음 받은 임무는 -> was 서버 구축이였다. VM(가상환경)으로 서버를 만든 후 그위에 톰캣, 마리아DB를 올리고 나만의 웹 에플리케이션 서버를 만들어보자! 순서는

themapisto.tistory.com

 

Linux를 배포하여 그 위에 WAS 서버를 설치했던 것이다. 입사한지 49일 정도 되었을 때 였을까? 메뉴얼에 open jdk를 설치하라고 적혀 있었다. 그래서 구글에 검색했더니 뭐 대충 이런걸 터미널에  적으라고 했던것 같다.

sudo apt-get install openjdk-8-jdk

 

아니 아무리 눌러도 이상한 에러가 뜨는거다. 알고보니 내 서버의 OS는 Ubuntu가 아니라 Redhat이었던 것이다. 아무튼 이건 그냥 떠오르는 하나의 예시인데, 실물 서버에 이런 미들웨어를 설치하는데 비슷한 에러들이 정말 수십번 발생한다는것.. 아무튼 실물 서버에 직접 설치하지 않고 도커라는 가상 레이어를 한겹 씌우게 되면, 이러한 의존성 문제들을 굉장히 수월하게 해결할수 있다. 어렴풋하게 감이 왔다면 도커에 대해 많이 검색해보고 공부해봐라. 책도 많이 시중에 있으니까!!

 

도커에 대한 설명으로 이 글이 정말 이해를 도와주는 글 같아서 링크 달아둡니다. 짱짱 수비쿠라님 감사합니다.

https://subicura.com/2017/01/19/docker-guide-for-beginners-1.html


서두가 또 너무 길었다. 요즘 글쓰기전에 서두를 적는 재미가 들린것 같다. ㅋㅋ

아무튼 도커가 정말 좋은 녀석이란 이야기를 하고싶었다. 이제 부터 도커로 컨테이너를 만들어보자.  

 

1. Docker file 작성

만들어둔 client svc들을 docker컨테이너로 만들어 주겠다.

어렵지 않다.

우선 만들어둔 프로젝트에 제일 위에 디렉토리에 Dockerfile을 만들자

 

FROM openjdk:8-jdk-alpine
CMD ["sudo","./mvnw", "clean", "package"]
ARG JAR_FILE=target/*.jar
COPY ${JAR_FILE} app.jar
ENTRYPOINT ["java","-jar","/app.jar"]

 

2. Maven 설치 

$ apt-get update 

$ apt install maven

 

3. maven 빌드

$ mvn clean package

 

4. 서버 실행 

$ java -jar demo-*.jar

 

 

5. Docker build / run

# 해당 디렉토리에 있는 Dockerfile을 찾아서 image tag를 koobuiold:0.0으로 해서 생성해라
$ docker build -t koobuild:0.0 ./

# 컨테이너를 외부로 노출시키는 방법
$ docker run -d -p 8012:8012 --name clientserver kooclient:0.0

 

6. 확인

 

정말 간단하게 어플리케이션을 빌드해서 노출시키는 실습을 해보았다! 도커 정말 편리한 녀석이지 않은가? 희희