-
[Docker] 이미지 생성부터 배포까지 with 스프링부트개발/CI CD 2023. 7. 27. 09:28
도커 사용 이유
- 서버확장 효율
- 어플리케이션 개발 완료 후 버전이 증가할 때 마다 한대의 서버에 가상머신을 사용하여 관리하거나 다수의 물리 서버를 사용하는 경우가 많은데요, 이 때 도커를 사용하면 하나의 서버에서 적은 리소스를 가지고 운영 가능합니다.
- 버전관리 용이
- 버전마다 이미지를 만들기 때문에 버전 관리도 용이합니다.
ex) 버전 다운그레이드가 용이
- 버전마다 이미지를 만들기 때문에 버전 관리도 용이합니다.
- 개발환경 통일
- 개발자가 여러명일 때 이미지를 통해 같은 환경을 만들어 줄 수 있으므로 좋습니다.
+) ECS/쿠버네티스 사용 이유
도커 컨테이너 관리를 쉽게 하기 위해도커 실습 (스프링부트 배포)
스프링부트 프로젝트 생성
- 프로젝트 생성
- 개발 환경
- 컨트롤러 만들기
- DockerPracticeContainer.java
package com.example.dockerpractice; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RestController; @RestController public class DockerPracticeContainer { @GetMapping("/") public ResponseEntity<String> hello(){ return ResponseEntity.ok("Hello Docker-Spring World!"); } }
- 실행결과
- 빌드하기
깃허브 주소
https://github.com/ysndy/docker-practice-springboot
이미지 생성
- 도커 파일 생성
- Dockerfile.docker
FROM adoptopenjdk/openjdk11 WORKDIR /usr/src/app COPY ./build/libs/docker-practice-0.0.1-SNAPSHOT.jar /build/libs/docker-practice-0.0.1-SNAPSHOT.jar CMD ["java", "-jar", "/build/libs/docker-practice-0.0.1-SNAPSHOT.jar"]
위 명령어에 대한 자세한 설명은 말랑님 블로그 (https://ttl-blog.tistory.com/761) 에 잘 정리 되어 있습니다.
- 도커 파일 빌드
- -t 뒤에 [자신의 도커아이디]/이미지 별명 을 추가하여 이미지를 별명으로 다룰 수 있습니다.
- 도커 허브에 업로드
- 도커 허브에 로그인 한 뒤 이미지 별명과 동일한 이름의 레포지토리를 새로 만듭니다.
CLI를 통해 Docker hub에 로그인 합니다.
docker-practice> docker login -u 유저아이디
로그인하려면 토큰이 필요한데요, 아래 공식 문서를 참고하여 토큰을 생성해줍니다.
https://docs.docker.com/docker-hub/access-tokens/
docker push 명령어로 레포지토리에 이미지를 업로드합니다.
docker-practice> docker push ysndy/springbootapp
다음과 같이 도커 hub에서 성공적으로 조회되는 것을 확인할 수 있습니다.
배포
아래 명령어로 이미지를 도커 허브에서 다운 받고 실행하면 배포 성공입니다!
docker pull ysndy/springbootapp docker run ysndy/springbootapp
이미지 파일 만들기
https://ttl-blog.tistory.com/761
도커 허브에 올리기
https://techblog-history-younghunjo1.tistory.com/246도커 사용 이유
- 서버확장 효율