이전 프로젝트를 진행했을 때 배포 작업을 수행하는 동안 서버가 다운되는 문제가 있어 이를 해결하고자 Blue/Green 배포를 도입하고자 했다! 이 과정에서 고민한 점은 다음과 같다. Github Actions VS Jenkins Github Actions : Github에서 직접 제공해주는 CI/CD 도구로, Github 저장소에서 발생하는 build, test, package, release, deploy 등 다양한 이벤트를 기반으로 직접 원하는 Workflow를 만들 수 있음. Jenkins : 거의 모든 언어의 조합과 소스코드 리포지토리(Repository)에 대한 지속적인 통합(CI)과 지속적인 배포(CD)를 제공함. 다른 일상적인 개발 작업을 자동화할 뿐 아니라 파이프라인(Pipeline)을 ..
CodeDeploy 배포 중 생긴 문제! [stdout]#6 [backend 2/2] COPY build/libs/*.jar /app.jar [stdout]#6 ERROR: lstat /var/lib/docker/tmp/buildkit-mount4102538440/build/libs: no such file or directory 문제 원인 : Dockerfile의 COPY 부분에 없는 파일을 복사하고자 할때 발생 # 이전 도커파일 FROM openjdk:17-jdk ARG JAR_FILE=build/libs/*.jar COPY ${JAR_FILE} /app.jar ENTRYPOINT ["java", "-jar", "/app.jar"] build/libs/*.jar 위치에 jar 파일이 생성되므로 위와 ..
데이터베이스는 서버에서 접근 가능해야 하기 때문에 보안 그룹 설정이 추가로 필요! 여기서 서버란 EC2 인스턴스의 탄력적 IP로, 이 글에서는 탄력적 IP 를 직접 넣는 대신 손쉽게 설정할 수 있는 방법을 설명할 것이다. ● EC2와 RDS를 연결하기 위한 RDS 보안 그룹 설정 EC2의 보안 그룹 ID를 확인해, RDS 인바운드 규칙에 EC2의 보안 그룹 ID를 추가해준다. MariaDB를 사용하고 있는데 MySQL로 3306 포트를 사용하여 헷갈리지 않기 위해 포트를 3307로 설정했다! (만약 MariaDB와 MySQL을 같이 사용한다면 둘의 기본 포트는 3306이므로 충돌이 날 수 있다.) 설정 후 EC2에서 RDS의 엔드 포인트로 다음과 같이 접속을 시도했지만 접속할 수 없었다. mysql -u..
개발 환경 Docker AWS EC2 Ubuntu Github Actions Spring boot Java 17 Gradle 인텔리제이에서 코드를 작성 후, Github로 Push. Github에서 조건을 만족할 경우, Github Actions 실행. (develop branch에 코드가 Push, Pull Request될 경우로 설정함) Github Actions는 미리 작성해 둔 .yml 파일의 내용대로 프로세스가 진행 빌드 도커 repository에 이미지 push ssh로 서버에서 도커 이미지 pull 받아 실행 1. Docker file 작성 FROM openjdk:17-jdk// jdk 설정 ARG JAR_FILE=build/libs/*.jar COPY ${JAR_FILE} /app.jar ..