[Docker] Dockefile
·
DevOps/Docker
Dockefile도커 이미지를 생성하기 위해 필요한 명령어들을 포함한 파일베이스 이미지를 시작점으로 여러 명령어들로 구성됨Base Image새로운 Docker 이미지를 빌드할 때 기본이 되는 이미지Dockerfile의 첫 번째 명령어인 FROM에 명시새로운 애플리케이션 환경을 구축하기 위해 필요한 초기 파일 시스템과 환경을 제공 Base Image의 유형운영체제 기반 베이스 이미지리눅스 배포판 또는 특정 OS 환경을 제공애플리케이션이 실행되는 데 필요한 기본적인 도구와 라이브러리 포함busybox, alpine, ubuntu, debian 등언어/플랫폼 기반 베이스 이미지특정 언어나 플랫폼 환경이 사전 설치된 이미지python, node, golang, openjdk 등명령어FROM: 베이스 이미지를 지..
[Docker] 이미지
·
DevOps/Docker
이미지란? 컨테이너를 실행하기 위한 모든 파일, 라이브러리, 설정 등을 포함한 읽기 전용 템플릿Dockerfile을 사용하여 이미지를 생성컨테이너를 생성하기 위한 템플릿 역할이미지 이름 구성//:레지스트리: 이미지를 저장하고 관리하는 원격 저장소계정 이름: 이미지 소유자를 구분하기 위한 네임스페이스이미지 이름: 이미지의 고유 이름태그: 이미지 버전 예시Docker Hub의 공식 Nginx 이미지docker.io/library/nginx:latest 를 의미nginx:latest이미지 레이어도커의 이미지는 여러 이미지 레이어가 중첩된 형태로, 각 레이어는 이전 레이어의 변경 사항을 가지고 있음예를 들어 nginx 이미지를 다운 받을 때, ubuntu 이미지가 존재하는 경우 nginx 레이어만 다운받음 → ..
[Docker] Docker 설치 및 기본 명령어
·
DevOps/Docker
mac에 Docker 설치터미널에서 orbstack 설치하고, 실행하기$ brew install orbstack hello-world 컨테이너 실행해서 다음과 같이 뜨면 정상적으로 설치된 것$ docker run hello-world orbstack에서 확인해보면, hello-world 이미지로 생성된 zen_roentgen(임의의 이름) 컨테이너가 종료된 상태Docker 기본 명령어docker ps: 실행 중인 컨테이너 확인docker ps -a: 모든 컨테이너 확인docker images: 로컬 이미지 목록 확인docker run: 이미지를 기반으로 컨테이너를 생성하고 실행docker stop: 실행 중인 컨테이너를 중지docker exec -it /bin/sh: 실행 중인 컨테이너 내부로 들어가 ..
[Git] Github Actions job, step 사용하기
·
DevOps/Git
워크플로에 job, step 추가하기워크플로에 job 추가하고, 하나의 step에서 진행하던 배포 과정을 여러 개의 step으로 나눔jobs에 pre-deploy 추가deploy의 step을 git checkout, create pemkey, create .env, runserver로 나눔name: EC2 deployon: push: branches: [ "main" ]jobs: pre-deploy: runs-on: ubuntu-latest steps: - name: pre step 1 run: echo "pre step 1 happens" deploy: runs-on: ubuntu-latest env: # GitHub Secrets 사용 ..
[Git] Github Actions으로 투표 앱 EC2에 배포하기
·
DevOps/Git
1. EC2 생성하기아래 참고해서 EC2 생성해 줌https://waiting-dedication-6e8.notion.site/24-11-15-AWS-EC2-13f4881a106f805a9e47d5b27c045f3b2. 환경 변수를 사용하도록 변경하기settings.py에서 CSRF_TRUSTED_ORIGIN 환경 변수 설정민감한 정보나 배포시 설정이 필요한 값들은 환경 변수로 설정하는 것이 좋음# 환경변수를 가져오고 None이 아닐 경우에만 추가extra_trusted_origin = os.getenv("CSRF_TRUSTED_ORIGIN")if extra_trusted_origin: CORS_ALLOWED_ORIGINS.append(extra_trusted_origin) CSRF_TRUST..
[Git] GitHub Actions 사용해보기
·
DevOps/Git
GitHub Actions란?빌드, 테스트 및 배포 파이프라인을 자동화할 수 있는 CI/CD 플랫폼github repository에 특정 이벤트가 발생하면 워크플로를 실행GitHub에서 워크플로를 실행할 테스트/빌드 서버를 제공해줌 (제공해주는 서버 말고도 온프레미스, 클라우드 서버를 사용하는 것도 가능)구성요소워크플로(Workflow): 하나 이상의 작업으로 이루어진 실행 흐름이벤트(Event): 레포지토리에서 발생하는 특정 활동으로, 워크플로 실행을 트리거함작업(Job): 워크플로에 정의되는 여러 단계로 구성된 작업 단위액션(Action): GitHub Actions에 복잡하고 반복적인 작업을 사전에 저장해두고, 단순한 코드로 사용러너(Runner): 워크플로를 실행하는 서버워크플로 파일Github ..
[CryptoStream] 암호화폐 데이터 파이프라인 구축하기
·
프로젝트/CryptoStream
개요본 프로젝트는 암호화폐 거래소인 Upbit에서 제공하는 실시간 호가창 데이터를 추출하고 저장하기 위한 데이터 파이프라인 구축을 목표로 합니다.Upbit의 현재 거래 가능한 암호화폐의 종류는 수십개 이상이며, 호가창 데이터는 실시간으로 변동되는 특징을 가집니다. 이러한 데이터의 특성을 고려하여 모든 암호화폐의 호가창 데이터를 실시간으로 처리하고, 부하 분산이 가능한 스트림형 데이터 파이프라인을 설계하고 구현하고자 합니다. 프로젝트 목표실시간 데이터 적재호가창 데이터를 스트림형 데이터 파이프라인을 통해 실시간으로 수집 및 저장합니다.부하 분산모든 암호화폐에 대한 데이터를 안정적으로 처리하기 위해 부하 분산 메커니즘을 설계 및 검증합니다.확장 가능성 확보초기에는 Docker 환경에서 데이터 파이프라인을 구..
[Redis] redis stream
·
Data Engineering/Redis
redis stream이란? Redis Stream는 Redis 5.0에 도입된 데이터 구조로, 로그나 타임라인 데이터를 처리하기 위해 큐와 비슷한 기능을 제공 주요 특징메시지 고유 ID: stream을 통해 전달되는 메시지는 각각의 고유한 ID를 가짐Append-only 방식: 메시지는 "append-only" 방식으로 추가되며, 메시지를 무한히 추가할 수 있음Consumer Group 상태 관리: Consumer Group 마다 stream에서 읽은 메시지를 기억하고, 메시지를 정확히 한번만 처리하도록 함병렬 처리: Consumer Group은 여러 Consumer를 가질 수 있는데, 이를 통해 메시지를 병렬적으로 처리할 수 있음 구성 요소Stream: 메시지를 순차적으로 저장하는 로그나 큐와 유사한..