SOPT 34기 서버파트/Docker 스터디

도커 컴포즈(Docker Compose)

softmoca__ 2024. 6. 25. 12:07

도커 컴포즈(Docker Compose) 란 ?

 

 

 

 

 

YAML 이란 ?

 

 

주요 명령어

docker compose up -d  # YAML 파일에 정의된 서비스 생성 및 시작
docker compose ps  # 현재 실행중인 서비스 상태 표시
docker compose build  # 현재 실행중인 서비스의 이미지만 빌드
docker compose logs  # 실행 중인 서비스의 로그 표시
docker compose down  # YAML 파일에 정의된 서비스 종료 및 제거

 

Hitchecker 앱 실습

 

 

app.py

from flask import Flask
from redis import Redis

app = Flask(__name__)
redis = Redis(host='redis', port=6379)  # 레디스 접속 정보 설정

@app.route('/')
def hello():
    redis.incr('hits')  # 경로 접근 시 redis의 캐시 값을 증가시키고 증가된 값을 출력
    return 'Hit Checked! 이 페이지는 %s 번 방문되었습니다.' % redis.get('hits').decode('utf-8')

if __name__ == "__main__":
    app.run(host="0.0.0.0", debug=True)

 

Dockerfile

FROM python:3.7-alpine
WORKDIR /app
COPY . /app
RUN pip install flask redis  # 애플리케이션 실행에 필요한 라이브러리 설치
CMD ["python", "app.py"]

 

docker-compose.yaml

version: '3'
services:
  hitchecker:
    build: ./  # 이미지 빌드 시 사용할 Dockerfile 경로
    image: hitchecker:1.0.0  # 이미지 빌드 및 컨테이너 실행 시 사용할 이미지 태그
    ports:
      - "5000:5000"
    restart: always  # 컨테이너 종료 시 자동으로 재시작

  redis:
    image: "redis:alpine"  # 컨테이너 실행 시 사용할 이미지 태그

 

실습 명령어 순서

# 1. easydocker/compose/hitchecker 에서 실행, 이미지 빌드
$ docker compose build

# 2. 빌드된 이미지 확인
$ docker image ls

# 3. 컨테이너 실행
$ docker compose up -d

# 4. 컨테이너 상태 확인, localhost:5000 접속
$ docker compose ps

# 5. 컨테이너 로그 확인
$ docker compose logs

# 6. 컨테이너 삭제 후 재실행 및 localhost:5000 접속, 값이 그대로 남아있는지 확인
$ docker rm -f {컨테이너명}

# 7. 서비스의 삭제
$ docker compose down

 

 

 

 

Leafy 앱 실습

 

 

 

 

 

 

Volume 추가

 

 

 

 

리소스 사용 제한, 재시작 정책 지정 추가