전체 글
-
도커파일부터 도커컴포즈까지스파르타코딩클럽/최종프로젝트 - DevQuiz 2024. 1. 21. 19:27
도커컴포즈를 배포하기 위해 백엔드와 프론트엔드를 묶은 도커컴포즈 파일을 만들었다. 아래는 도커파일부터 이미지 빌드 및 배포, 그리고 도커컴포즈 yml파일을 통한 실행까지의 과정과 트러블슈팅을 간략히 작성하였다. Dockerfile 도커컴포즈에 필요한 이미지는 MySQL REDIS 백엔드 (스프링) 프론트엔드 4개이며 DB는 공식이미지를 다운받으면 되므로 백엔드와 프론트엔드를 도커파일로 작성하였다. 백엔드 도커파일 도커파일 - 빌드 실패 FROM gradle:8-jdk17-focal LABEL purpose='Backend' \ version='1.0' WORKDIR /app COPY gradle/wrapper ./gradle/wrapper \ src ./src \ README.md ./README.md ..
-
코인 저장 로직 리팩토링 - 퀴즈와 연결스파르타코딩클럽/최종프로젝트 - DevQuiz 2024. 1. 19. 19:12
기존의 코인 저장 로직은 사실상 Mock과 다를게 없었다. 퀴즈를 풀었다가 선행되어야 코인 저장이 작동해야했는데 퀴즈보다 먼저 구현되었기 때문에 퀴즈와 연동하는 리팩토링이 필요했다. 코인 획득 로직 구현에 대한 고민 Dev Quiz에서 문제를 풀었을때 얻는 리워드들을 구현하는 역할을 맡게 되어 로직에 대한 고민이 많았다. 그동안은 간단한 CRUD에서 파생된 기능들만을 구현했으나 이번엔 전혀 다른 느낌이라 생각 like-it-too.tistory.com 먼저 기존에 서플라이어로 구현했던 로직을 switch문으로 변경하였다. @Getter @NoArgsConstructor @AllArgsConstructor public enum CoinContent { // 문제 FIRST("SAVE", "FIRST", 2..
-
도커 열번째 - 도커 컴포즈프로그래밍/Docker 2024. 1. 18. 05:19
Docker Compose 이 명령어들은 docker-compose.yaml 파일이 있는 디렉토리에서만 동작한다. - 도커컴포즈는 여러번의 도커CLI를 실행하지 않고, 한번에 관련 어플리케이션을 yaml 파일로 구성하여 내부환경 구성과 속성을 실행할 수 있다. - 도커컴포즈는 설정값을 캐싱하기 때문에 재시작시 변경이 없다면 캐싱된 정보를 그대로 사용하여 빠른 서비스 실행을 보장 - yaml 코드에 포함된 어플리케이션들은 동일 네트워크에 포함되기 때문에 복잡한 연결 구성 없이도 쉽게 API 통신이 가능 - 도커컴포즈는 쿠버네티스와 같이 컨테이너 오케스트레이션 및 컨테이너화된 어플리케이션 관리에 널리 사용되는 도구 - 도커컴포즈는 다중 컨테이너 도커 어플리케이션을 정의*하고 실행하기 위한 도구 yaml파일을..
-
도커 컴포즈와 CI/CD 구현 계획스파르타코딩클럽/최종프로젝트 - DevQuiz 2024. 1. 17. 14:52
백엔드 관련 남은 일 Coin API 와 Quiz API 연동 연동하게 된다면 Quiz에서 Quiz 관련 status를 파라미터나 requestDto에 받아야하므로 현재 구현한 서플라이어를 쓰지 못하게 될 것으로 예상 해당 로직 재구현 필요 코드 리팩토링 (일정 미정) 인프라 담당 CI/CD (젠킨스) 도커 (+ 도커컴포즈 -> 쿠버네티스(미정)) 레디스 클러스터(미정. 하지않는다면 AWS 엘라스틱 캐시 사용) 진행순서 도커 컴포즈 구현 이후 젠킨스를 통한 CI/CD 구현 마감시한 도커컴포즈 + CI/CD 22일(예상) 배포가 최우선순위
-
도커 아홉번째프로그래밍/Docker 2024. 1. 16. 21:48
Dockerfile 최적화 - 고려요소 1. 빌드시간 2. 이미지 크기 3. 재사용성 4. 보안 5. 유지보수성 기타 등등 - 경량의 컨테이너 서비스 제공이 목적 최적화방안 1. 컨테이너 이미지에서 불필요한 바이너리를 모두 제거하여 이미지 경량화 - 설치된 패키지파일 autoremonve, clean 등으로 제거 - apt install -y --no-install-recommencs 을 사용하여 패키지 설치 시 불필요한 패키지 설치 방지 - 이미지 내부에 빌드와 관련없는 불필요한 파일을 포함하지 않기 위해 dockerignore 사용 2. 베이스 이미지를 alpine Linux 또는 scratch 사용 3. multi-stage build 를 사용하여 최종 이미지 크기를 최소화한다. - multi-st..