전체 글

Docker를 통한 Database 구동Database: 사용하려는 DB의 Base Docker Image 기반에 추가 설정목적: Docker를 통한 Database(MySql) 구동 ← docker 명령어 사용데이터베이스 구동은 Dockerfile 통한 이미지 생성 없이, 베이스 이미지로 바로 구동한다.1. MySQL 도커 구동아래 명령어를 통해 바로 구동이 가능하다주의: 도커 내 포트는 3306이지만, 로컬 노출 포트는 33066docker run --name mysql-container \-e MYSQL_ROOT_PASSWORD=root \-e MYSQL_USER=asac \-e MYSQL_PASSWORD=1234 \-e MYSQL_DATABASE=example \-p 33066:3306 -d my..
개발환경과 배포환경의 분리, 일관된 실행 환경Why Use to Docker?도커라이즈를 적용하기에 앞서, Docker를 사용하는 근본적인 이유에 대해 알아보자.격리(Isolation): 로컬(인스턴스)의 환경과 분리된 도커 환경으로 로컬 환경의 오염이나 충돌을 방지한다.일관성(Consistency): 다양한 로컬(인스턴스)에서도 도커를 통해 일관된 애플리케이션을 구동할 수 있다.Docker가 없을 때:로컬(인스턴스) 환경과 App 구동을 위한 환경이 충돌하고 이리저리 섞인다.문제점: 각 개발자의 로컬환경이 서로 달라, 일관된 환경 구성이 어렵다.Aaron: Window OS에서 MySQL 5.7, JVM 17, 16, 12Baron: Linux OS에서 MySQL 8, JVM 17, 8Caron: Ma..
실습 #3앞선 포스팅에서 언급했듯, 매번 배포 시, GitHub Actions가 Docker Hub에 이미지를 푸시하고, 개발자가 EC2에 직접 접속해 수동으로 이미지를 가져와 실행하는 것은 번거롭고 비효율적이다. 따라서, Github Actions가 이미지를 Docker Hub에 푸시한 후 자동으로 EC2에 접속해 이미지를 Pull하고 컨테이너를 실행하도록 설정하면 훨씬 더 수월하고 편리하게 자동 배포를 수행할 수 있다. 따라서 이번 포스팅에선 자동으로 이미지를 Pull, 컨테이너를 실행하도록 설정하는 작업 과정을 포스팅할 예정이다.이 자동화 방식에서는 GitHub Actions가 EC2에 SSH로 접근해 다음 작업을 처리할 수 있다.Docker Hub에서 최신 이미지 Pull: 새로운 이미지가 생성되..
실습 #21.  AWS EC2 생성첫번째로 현재 CD를 통해 Spring을 구동할 AWS EC2가 아직 없으니 인스턴스를 만들어준다.키페어는 없이 진행.이전에 만들었던 VPC로 진행할 예정 (https://1000sang-dev.tistory.com/64) 퍼블릭 IP 자동 활성화 설정보안 그룹의 경우 기존 22번 포트 외에 "8080 포트의 모든 IP" 인바운드 규칙을 추가해줘야한다.사용자 지정 TCP 포트 8080 입력 → 위치 무관(모든 IP) 추가EC2 연결 확인 아래 이미지를 통해 EC2 인스턴스 연결을 통해 접속을 성공한 것을 확인할 수 있다. 👏 2. 생성한 AWS EC2 내 Docker 설치도커 이미지를 컨테이너로 실행하는 것은 Docker Daemon(Docker Engine)이다.지금..
실습 #1 1. CI 사전 준비: 배포하고자 하는 Java 코드 작성 및 Github 업로드⚠️ 필자는 이전에 공부했던 Spring 실습 코드를 Github를 이용할 예정이다. 1. 디폴트 브랜치 이름을 main으로 바꾸어준다.필자는 main 브랜치로 배포할 것임.git branch -m main 2. 원격 저장소를 생성한 후, 원격 저장소(Github Repository)에 Push. (sanghyun-e/ci-ci-tutorial) 원격 저장소가 없는 경우 git remote add origin git@github.com:SangHyun-e/ci-cd-tutorial.git 원격 저장소를 변경하는 경우git remote set-url origin git@github.com:SangHyun-e/ci-c..
Event, Runner, Job, Step, ActionCI / CD Tool: GitHub ActionsGitHub Actions vs Jenkins CI / CD 툴로 유명한 것은 GitHub Action과 Jenkins가 있다. Jenkins는 별도의 Jenkins 서버를 따로 구축해야되기 때문에 무료 툴인 GitHub Action을 사용할 예정이다. Why Use to GitHub Actions?CI / CD 간소화: 별도의 서버(Jenkins 등)를 구축할 필요 없이 GitHub에서 무료로 제공한다.원활한 통합: GitHub 저장소와 자연스럽게 연동되어 자동화 및 반복적인 작업 수행에 유리함.CI / CD 개념CI (Continuous Integration): 코드가 지속적으로 통합되어 빌드 ..
Outbound / NAT InstancePrivate EC2에 외부 접근 허용: OutBound를 위한 NAT Instance 설정더보기AWS에서 NAT Instance의 공식지원이 없어지고, NAT Gatway를 공식화 했다.하지만, NAT Gateway는 비용이 너무 비싸기 때문에 NAT Instance를 만들어 쓰면 된다.1. NAT Instance 역할을 할 EC2(Public Subnet) 인스턴스 만들기1. 인스턴스 이름(public-nat-test) 설정 2. AMI 설정AMI 검색을 통해 커뮤니티 버전으로 나온 NAT를 위한 AMI를 사용한다.AWS 공식 NAT Instance(Pre-configured Amazon Linux AMI)는 더이상 지원하지 않는다.→ `amzn-ami-vpc..
Bastion / SSH TunnelingPrivate EC2 생성 후 외부 접근 허용: Inbound 위한 Bastion 설정1. PEM 파일은 Private Key AWS에서 PEM 파일은 Private Key다. SSH 클라이언트를통해 원격 서버(EC2 인스턴스)에 접근할 때, Private Key가 필요하다.AWS 콘솔에서 생성된 PEM 파일은 Private Key로, 이를 통해 EC2 인스턴스에 연결할 수 있다. Public Key는 AWS가 EC2 생성 시 내부적으로 주입되며, 사용자는 이를 볼 수 없다.2. SSH 접속 시 Key Pair 사용SSH 클라이언트는 원격 서버에 접속할 때  Key Pair 중 Private Key를 사용한다. 클라이언트는 PEM 파일(Private Key)을 사..
1000_sang
CHEONSANG-DEV