Notice
Recent Posts
Recent Comments
Link
«   2025/05   »
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
Tags more
Archives
Today
Total
관리 메뉴

seaking110 님의 블로그

Docker & CICD 본문

Today I Learned

Docker & CICD

seaking110 2025. 3. 26. 16:01

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