부자 되기 위한 블로그, 머니킹

최근 여러개의 프로젝트를 배포하면서 단순히 jar로 실행하는 것이 아닌 docker와 연동하여 띄우는 것이 효과적임을 알았다. 앞으로의 작업들은 아마 docker를 통해 배포 관리를 할 것 같다. docker는 간단히 말하면 배포 환경에 동일한 세팅을 공용으로 진행하기 위해 컨테이너라는 시스템을 도입한 것이다. 이번 포스팅에서는 연동 방법만 알아보고 다음에 Docker에 대한 개념을 자세히 알아 보겠다.

 

Docker 설치

https://docs.docker.com/desktop/mac/install/

 

Install Docker Desktop on Mac

 

docs.docker.com

 

위 사이트에 들어가서 Docker를 설치한다. 맥의 경우 Intel용과 m1용이 따로 있으니 잘 확인해준다.

 

https://www.docker.com/

 

Home - Docker

DockerCon is a free, immersive online experience complete with product demos, breakout learning tracks, panel discussions, hacks & tips, deep dive

www.docker.com

그리고 Docker 사이트에 들어가서 회원가입 및 로그인을 해준다.

 

 

로그인이 완료되면 Repository에 들어가서 생성해준다. Docker의 repository는 git repository와 비슷한 느낌이다.

 

이후 설치한 docker를 실행하면 Docker desktop 앱이 실행된다. 앱을 실행하면 자동적으로 Docker hub가 실행되므로 터미널에서 사용할 수 있다.

 

 

Docker 스프링 연동

build 를 통해 미리 build 파일을 만들어 놓는다.

 

FROM openjdk:11
VOLUME /tmp
ADD build/libs/dummy_module.jar app.jar
ENTRYPOINT ["java","-jar","/app.jar"]

해당 내용으로 프로젝트 바로 하위에 Dockerfile이란 파일을 만든다. (이름 Dockerfile)

 

docker image build -t [docker hub id]/[repository]:[tag] .

docker 이미지를 빌드한다. --build-arg 옵션을 통해 Docker 파일에 작성한 ARG 인자들을 넘길 수 있다. 마짐가에 '.'을 꼭 추가해야 에러가 안난다.

 

옵션 –tag $태그명, 해당 명령어를 통해 태그를 지정할 수 있으며 미지정시 latest로 자동 지정된다.

 

docker push [계정]/[repository 명]

docker hub가 실행되는 상황에서 위와 같이 Dockerfile이 있는 경로에서 Push 해준다.

 

위와 같이 push가 잘 된 모습을 볼 수 있다.

 

AWS EC2 Docker 설치

 

도커 설치

  • $ sudo yum install docker

도커 실행

  • $ sudo systemctl start docker

도커 허브에 존재하는 이미지 파일 pull

  • $ sudo docker pull [계정]/[Repository 명]

도커 이미지를 통해 스프링 부트 애플리케이션 배포(실힝)

  • $ sudo docker run -p 8080:8080 [계정]/[Repository 명]

 

그냥 실행하면 꺼지기 때문에 tmux를 통해 실행해주자

 

tmux new -s [session-name]
tmux attach -t [session-name]

[docker run 실행]