2022. 2. 4. 04:53ㆍTIL(Today I learned)
📕Facts(한 것)
- Docker로 스프링 프로젝트 배포
📕Findings(배운 것)
이번에 진행하는 프로젝트의 배포 방식은 도커이고 싶었다.
왜 도커일까? 도커가 가진 장점이 뭐길래? 그리고 지금 프로젝트에서 필요한가?
도커의 장점은 아래의 글에서 알아보자.
도커는 주로 여러개의 서버를 배포할 때 사용하는데, 우리팀의 경우 당연히 그럴 경우는 없었다.
그럼 왜 도커여야 했을까?
특별한 이유는 없지만 현재 대다수의 기업이 aws상에서 도커로 배포를 진행한다.
그리고 쿠버네티스가 각광받고 있는 지금, 도커를 미리 익혀보는 것이 학습에 큰 도움이 될 것이라고 생각했기 때문이다.
그럼 도커로는 어떻게 배포할까?
우선 도커를 사용하려면 도커 파일이 프로젝트 최상단에 존재해야한다.
반드시 도커파일을 이름은 Dockerfile 이어야 한다.
FROM openjdk:11
EXPOSE 8080
ADD build/libs/devthink-0.0.1.jar devthink-0.0.1.jar
ENTRYPOINT ["java", "-jar", "devthink-0.0.1.jar"]
우리 프로젝트는 자바 11버전을 사용하고 있기 때문에 openjdk:11을 적용했다.
그리고 8080포트로 내보낼 것이며,
빌드된 파일의 위치를 알려주고
진입점을 설정해주면 된다.
빌드된 파일의 위치를 알려줬단 얘기는 빌드된 파일을 사용한다는 뜻이다.
그렇기 때문에 도커설정 전에 빌드가 선행되어야 한다.
./gradlew build
혹은
//test 없이 빌드
./gradlew build -x test
위의 명령어를 통해서 빌드를 진행하면
/build/libs 에 파일이 빌드한 파일이 생성된다.
여기서 aws배포라면 그냥 aws상에서
java -jar {파일이름}을 하면 되지만, 우리는 도커를 사용하기 때문에 다른 절차가 필요하다.
먼저 파일을 git에 모두 올려놓고, aws상에서 clone한다.(aws 상 빌드)
혹시 도커 허브에 가입되어 있지 않다면 도커허브에 가입하자.
이후 aws상에 클론된 프로젝트 최상단으로 가서 아래의 명령어를 입력한다.
docker build --build-arg DEPENDENCY=build/dependency -t 도커허브ID/repository이름 .
//호옥시 local에서 빌드할경우 m1 맥 이라면
docker build --build-arg DEPENDENCY=build/dependency -t 도커허브ID/repository이름 --platform linux/amd64 .
여기서 주의할점은 반드시 .을 포함하는 것이다.
그리고 아래의 명령어를 입력해서 도커허브에 빌드된 이미지를 넣어주자.
docker login
docker push 도커허브ID/repository이름
그럼 도커허브 홈페이지에 들어가서 로그인 하면 자신의 이미지가 푸쉬되었음이 확인가능하다.
그리고 aws상으로 가보자.
aws에 도커가 설치가 되어 있지 않다는 가정하에
- 도커 설치
- 도커 실행
- 도커 허브의 이미지파일 pull
- 도커 이미지를 배포
의 순서로 이어진다.
sudo apt-get install docker
sudo service docker start
sudo docker pull 도커id/repository이름
sudo docker run -d -p 8080:8080 도커id/repository이름
(맨 마지막 -d 를 넣게되면 nohup을 입력한 것과 마찬가지로 백그라운드에서 계속 서버를 실행한다.)
위 순서대로 명령어를 입력하고 주소창에 본인 aws의 퍼블릭 주소를 입력하면 접속을 할 수 있다.
📕Feeling(느낀 점)
배포를 혼자 진행해서 삽질이 많았지만 해결해서 기쁘다.
📕여담
'TIL(Today I learned)' 카테고리의 다른 글
(TIL) 20220207 (0) | 2022.02.08 |
---|---|
(TIL) 20220203 (0) | 2022.02.05 |
(TIL) 20220201, aws에서 스프링 프로젝트 배포하는 방법 (0) | 2022.02.02 |
(TIL) 20220128, docker로 배포 (0) | 2022.01.29 |
(TIL) 20220127, Swagger 3.x 버전 사용법(Spring) (0) | 2022.01.28 |