Docker에 대해서 알아보자 - 3. docker build & docker compose
·
프로젝트
Dockerfile을 기반으로 이미지를 "어디서 어떻게" 빌드할지 설정하고 실행하는 게 docker build의 역할입니다. 내부적으로는 BuildKit이라는 고급 빌더를 사용해서 빌드 환경, 캐시 전략, 플랫폼, 시크릿, SSH, 출력 방식 등을 설정할 수 있습니다.docker-compose에서는 컨테이너를 어떻게 실행시킬지에 대한 설정을 할 수 있습니다. docker build와 docker compose에 대해서 설명하면서 컨테이너 오케스트레이션 직전까지의 docker 게시물을 마치겠습니다.📌 docker buildxdocker의 builder에는 레거시 builder와 Buildkit을 사용하는 buildx가 있습니다. buildx는 필요한 파일만 전송, 캐시 재사용, 병렬 실행, 그리고 성..
Docker에 대해서 알아보자 - 2.Dockerfile
·
프로젝트
--cache-from📌 Dockerfile 개념Dockerfile은 "docker image를 어떻게 만들 것인가?"에 대한 레시피라고 생각해도 좋습니다.Dockerfile은 docker image를 만드는 방법이 담겨있고, docker-compose는 "image를 어떻게 실행할 것인가"에 대한 방법이 담겨있습니다. 이번 게시물에서는 Dockerfile의 명령어들과 어떻게 Dockerfile을 작성해야 하는지 알아보겠습니다.ADD : 로컬/원격 파일 추가, 압축 파일 자동 해제ARG : 빌드 시 사용되는 변수 설정CMD : 컨테이너 실행 시 기본 명령COPY : 로컬 파일/디렉터리 복사ENTRYPOINT : 고정 실행 명령어 설정ENV : 환경 변수 설정EXPOSE : 애플리케이션이 사용하는 포트 ..
Docker에 대해서 알아보자 - 1.Docker의 개념과 생태계
·
프로젝트
💡 도커는 Linux Container를 기반으로 만든 OS 레벨의 가상화를 도와주는 프로그램입니다. Container라는 단위를 이용해서 애플리케이션과 그 실행에 필요한 라이브러리, 설정 파일 등을 하나의 패키지로 묶어, 어떤 환경에서도 동일하게 실행될 수 있도록 보장해 줍니다.기존의 가상 머신과 달리, 컨테이너는 호스트 OS의 커널을 공유하면서 격리된 공간에서 실행되기 때문에, 리소스 사용이 적고 실행 속도가 빠르며, 배포가 간편하다는 장점이 있습니다. 이러한 특성 덕분에 도커는 개발, 테스트, 운영 환경 간의 차이를 최소화하고, CI/CD, 마이크로서비스, 클라우드 환경에서 매우 널리 사용되고 있습니다.📌 1. 왜 도커를 써야 할까요?1️⃣ Environment Disparity 문제 해결..
Clokey 프로젝트 회고
·
ETC
📌 프로젝트 개요 Scope : 2024.12 ~ 2025.02 (약 3달)Team : PM(1) , Design(2), Front(4), Backend(4)⚡ Frontend 기술 스택 ( Github Repository : 🔗)언어: Swift 프레임워크: UIKit 레이아웃: SnapKit, Then 네트워크: Moya 이미지 캐싱: Kingfisher 온보딩 & 스플래시 애니메이션: Lottie ⚡ Backend 기술 스택 (Github Repository : 🔗)언어 & 프레임워크: Java, Spring Boot 데이터베이스: MySQL, JPA 검색: Elasticsearch 알림: FCM (Firebase Cloud Messaging) 인증 및 보안: 카카오 & 애플 로그인, JWT,..
배포의 모든 것 - 4. 도메인 연결과 HTTPS 적용하기
·
프로젝트
🥳 현재 자동으로 EC2로 배포가 되도록 간단히..? CI/CD를 설정해 두었습니다.이번 포스트에서는 도메인을 구입하고 ip가 아니라 도메인 주소로 배포된 서버로 접속할 수 있도록 연결해 보도록 하겠습니다. 현재의 public IP로 접속을 해봅시다. 다음과 같이 사이트에 연결할 수 없다고 출력이 나올 것입니다. 💡 왜일까요? Public IP를 그냥 그대로 검색을 하게 되면 Http 요청으로 EC2의 80 포트로 들어오게 됩니다. 하지만, 저희의 Spring Application은 8080 포트에서 돌아가고 있습니다.따라서, 80 포트로 요청이 들어오게 돼도 8080 포트로 요청을 넘겨줄 수 있는 웹 서버가 없기 때문입니다.그렇다면 8080으로 직접 접속하면 접속이 되겠군요? -> 맞습니다.실습을 ..
CI/CD 도구 - 1.Github Action
·
Server
🤔 개발자라면 꼭 마주하게 되는 CI/CD 과정 어떤 도구를 활용하는 것이 좋을까요?JetBrains에서 조사한 통계를 알아보겠습니다. ❗ 매년 조금씩 바뀌지만, GitHub Action과 Jenkins는 항상 상위권에 있는 것을 확인할 수 있습니다.따라서, 두 가지 CI/CD 방법에 대해서 다뤄볼 생각입니다. 우선 두 가지 CI/CD 도구가 어떤 차이를 가지고 있는지 비교해 보겠습니다.다음과 같은 차이점들이 있는데 결과적으로는 Jenkins는 초기 세팅이 Github Action보다는 조금 더 복잡하지만 확장성이 좋다고 볼 수 있습니다. 그만큼 Github Action은 사용하기 조금 더 쉽다는 장점이 있습니다.⚠️ 그런데 CD 작업에서 Github Action을 사용하게 된다면 여러 서버들을 pub..