본문 바로가기
Cloud 관련 지식

Dockerfile, Docker-compose

by 달리는 꿈나무 2023. 4. 13.

Docker란?

개발자가 가볍고 휴대 가능한 컨테이너에서 애플리케이션 배포를 자동화할 수 있는 오픈 소스 플랫폼으로 새로운 OS를 설치하는 VM과 다르게 리눅스 환경에서 하나의 컨테이너를 어플리케이션(프로세스)개념으로 메모리에 올릴 수 있어 경량화가 가능하고 버전 관리 및 아키텍처 구성이 가능하다.

컨테이너란?

코드, 런타임, 시스템 도구 및 라이브러리를 포함하여 애플리케이션을 실행하는 데 필요한 모든 것을 포함하는 격리된 독립 실행형 실행 소프트웨어 패키지

→ 일관되고 재현 가능한 환경을 제공하므로 다양한 환경에서 애플리케이션을 더 쉽게 개발, 테스트 및 배포를 할 수 있도록 도와준다.

Dockerfile이란?

Docker 이미지를 빌드하기 위한 지침이 포함된 텍스트 파일로 docker build image 명령어를 사용할 때 구동되는 이미지 설정 파일이다. 어플리케이션이 빌드시 어떤 조건과 어떤 환경이 갖춰져야되는지 설정할 수 있다.

예시)

# Use a Java base image
FROM openjdk:11-jre

# Set the working directory
WORKDIR /app

# Copy the application jar file
COPY my-app.jar .

# Run the application
CMD ["java", "-jar", "my-app.jar"]

Docker Compose란?

다중 컨테이너 Docker 애플리케이션을 정의하고 실행하기 위한 도구로 YAML 파일을 사용하여 Docker 애플리케이션에 필요한 서비스, 네트워크 및 볼륨을 정의한다. Docker Compose를 사용하면 모든 컨테이너, 네트워크 및 구성을 포함한 전체 애플리케이션 스택을 단일 파일로 정의할 수 있으므로 여러 서비스로 복잡한 애플리케이션을 쉽게 관리하고 배포 가능하다. 도커 파일도 함꼐 사용이 가능하다.

예시)

version: '3'
services:
  web:
    build: .
    ports:
      - "8080:8080"
    depends_on:
      - db
      - redis
  db:
    image: mysql:5.7
    environment:
      MYSQL_ROOT_PASSWORD: mysecretpassword
      MYSQL_DATABASE: mydb
  redis:
    image: redis:6.2

CICD With GitActions

추가적으로 도커 컴포즈 파일을 사용해서 깃액션즈를 통해 워크플로우 파일이 작성 가능하다. 이를 통해 인스턴스와 연결 후 CICD를 구성할 수도 있다. 물론 일반 서비스를 이용해서 구성하는게 편하긴 하지만 YAML 언어를 통해 설정하는 것이 백엔드의 기초적인 스킬이 아닐까

예시)

name: Docker Compose Build and Deploy

on:
  push:
    branches:
      - main

jobs:
  build:
    runs-on: ubuntu-latest
    
    steps:
    - name: Checkout code
      uses: actions/checkout@v2
    
    - name: Build and push Docker image
      uses: docker/build-push-action@v2
      with:
        context: .
        push: true
        tags: your-docker-hub-username/your-image-name:${{ github.sha }}
    
  deploy:
    runs-on: ubuntu-latest
    
    steps:
    - name: Checkout code
      uses: actions/checkout@v2
    
    - name: Install Docker Compose
      run: |
        sudo apt-get update
        sudo apt-get -y install docker-compose
    
    - name: Copy Docker Compose file
      run: cp docker-compose.yml ./docker-compose.yml
    
    - name: Start services with Docker Compose
      run: docker-compose up -d
    
    - name: Run tests or other deployment tasks
      run: |
        # Add your deployment tasks here, such as running tests or other scripts
        
    - name: Stop services with Docker Compose
      run: docker-compose down

'Cloud 관련 지식' 카테고리의 다른 글

AWS VPC 및 SubNet 구축 실습  (0) 2023.06.26
AWS Shield & WAF(Web Application Firewall)  (0) 2023.06.23
AWS ECS  (0) 2023.01.20