docker을 이용해서 Spring Cloud Application을 배포하는 방법에 대해 알아보자
1. 도커?
도커는 어플리케이션을 컨테이너화 해주는 툴이다.
https://themapisto.tistory.com/11
왜 컨테이너화를 하지?
컨테이너화를 하는 이유에 대해서 간략하게 설명하자면 기본적인 서버에 대한 지식이 필요할 것이다. 위 글을 참고하도록 한다.
우리 모두가 서버에 대한 지식을 갖추었다고 생각하고, 내 경험을 비롯하여 컨테이너에 대해서 설명해보도록 하겠다.
내가 2018년 가장 처음 회사에 들어갔을때 가장 먼저 한 일은 내 블로그에 기록도 남아있겠지만 https://themapisto.tistory.com/2
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. 확인
정말 간단하게 어플리케이션을 빌드해서 노출시키는 실습을 해보았다! 도커 정말 편리한 녀석이지 않은가? 희희
'개발스터디 > MSA 스터디 (22년)' 카테고리의 다른 글
[MSA 1.0] (9) Spring Cloud Config 시작하기 (0) | 2022.12.29 |
---|---|
[MSA 1.0] (7) Spring Cloud 어플리케이션을 kubernetes로 배포하기 (0) | 2022.12.08 |
[MSA 1.0] (5) RestTemplate 개념과 사용법 (0) | 2022.12.06 |
Java MSA를 위한 Spring Cloud 환경 구축하기(Eureka) (1) | 2022.06.30 |
[MSA 1.0] (3) RabbitMQ 메시징 큐 서비스 구현하기 (0) | 2022.06.28 |