seaking110 님의 블로그
Docker & CICD 본문
Docker & CICD
Docker
- 소프트웨어 개발과 배포를 도와주는 컨테이너 기술
- 도커를 사용하여 애플리케이션을 빌드, 배포, 실행하는 과정을 쉽게 관리 가능
먼저 Container라는 단어를 이해해보자
- CD를 생각하면 쉬움
- CD가 Docker 이미지, 실행된 프로그램이 Container라고 생각하면 됨
- CD만 있다면 친구네 컴퓨터로도 똑같이 프로그램을 실행 가능 <- 핵심
- 애플리케이션과 그 실행 환경을 함께 페이징하여 어디서든 동일하게 실행될 수 있도록 해주는 기술
도커를 사용하는 이유
- 일관성 : 내 컴퓨터에서는 잘 되는데..와 같은 문제 줄어듬
- 이식성 : 컨테이너는 어디서든 동일한 환경을 제공하므로 다양한 플랫폼에서 쉽게 애플리케이션을 실행할 수 있음
- 확장성 : 컨테이너를 이용한 마이크로 서비스 아키텍쳐를 통해 애플리케이션을 쉽게 확장할 수 있다.
도커
윈도우의 경우 hyper V 또는 wsl이라는걸 이용해서 최근엔 쉬워짐
도커 명령어 암기는 금지! 모르는건 그때 그때 검색하기
도커 올리는데 시간낭비를 했었다 이유는?
build의 libs의 jar를
도커 내부에서의 디렉토리 경로
WORKDIR /app <- 도커의 app이라는 경로에서 진행하겠다
COPY build/libs/*.jar /app/myapp.jar
내컴퓨터에 ( build/libs/*.jar )있는 걸 뒤에 ( /app/myapp.jar )위치에 있는 곳으로 카피를 하겠다
그래들로 프로젝트를 빌드를 하는데 도커 파일 안에 빌드 과정을 넣을 수 도 있음
오 넣는게 좋겠다
alpine이란?
- 쓸데 없는것을 빼고 최소한의 패키지만을 포함하는 경량 리눅스
- 일반 이미지에 비해 가볍기 때문에 빌드, 배포 속도가 빨라짐
- - alpine, -slim이 붙은 이미지를 쓰는게 유리!
- 하지만 안될수도 있다!
Docker Compose
- Docker Compose에서 Port를 연결해줘야한다! 반드시!
- Doker에 Spring을 띄우고 Local에서 접속을 하려면 도커 네트워크랑 우리 로컬과 연결을 해야함
- mysql 역시 연결 필요
- 도커에서 스프링에서 mysql을 쓰려면 LocalHost가 아닌 토커 이미지의 이름인 DB를 잡아서 db:3306을 써야함
- 따라서 환경 변수 또한 나눠야함!
- 도커 Compose는 유용한 도구인 것은 맞지만 개발할 때만 유용
- 실제 배포 세에는 쓰기가 상당히 제한
- 한 컴퓨터에다가 몽땅 다 띄우는 식
- 하지만 실제 배포시에는 한 인스턴스에 모든 서버가 다 올라가지 않음!
- 따라서 개발 상황에서만 유용
- 실제 배포 시에는 redis -> elasticache 로 mysql -> rds 등등으로 띄워야함
CICD
- 지속적 통합 (Continuous Integration) 및 지속적 배포(Continuous Deployment) 를 의미
- 소프트웨어 개발 라이프 사이클을 간소화하고 가속화하는 것을 목표
- 또한 테스트 코드를 작성을 해야만 CICD를 하는 의미가 있음!
- CICD의 방법은 아주 다양 <- 암기 X 이해의 영역
- CICD를 3단계로 큰 단위로 분류하고 이를 기반으로 생각하기!
CICD의 3단계
- 개발, 빌드, 배포
- 개발은 로컬 빌드는 GitHub Actions, 배포 EC2
- 하지만 GitHub Actions은 서버! 실제로 EC2 같은 서버
- 그래서 그 서버에서 어떻게 뭔가를 할건데를 결정해야함
- 깃헙 액션
- 로컬에서 개발하여 깃헙 액션에 Push
- 깃헙 액션에서 .jar 파일로 빌드
- 빌드한 .jar 파일을 s3에 업로드
- EC2에서 S3에 있는 .jar를 당겨와서 배포
- 도커를 이용하면
- .jar 빌드
- 도커 이미지를 만들기!
- docker image를 push 어디로? S3에
- EC2에서 S3에 있는 도커 이미지를 통해 컨테이너를 띄울 수 있음
- S3에서 도커 이미지를 하도 많이 쓰니까 Docker Hub 또는 AWS ECR이 생김 (ECR 선호)
- ECR은 사실은 S3랑 다름이 없음
'Today I Learned' 카테고리의 다른 글
도커 실습 (0) | 2025.03.28 |
---|---|
캐시 (0) | 2025.03.26 |
AWS 특강 (0) | 2025.03.24 |
plus 주차 트러블 슈팅 (0) | 2025.03.21 |
plus 주차 개인 과제 (0) | 2025.03.21 |