최근 여러개의 프로젝트를 배포하면서 단순히 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 실행]