내 간단한 Docker 프로젝트
Source: Dev.to

Source: …
🐳 간단한 “Hello World” Docker 프로젝트 만들기
🚀 이 가이드에서는 “Hello World” 메시지를 표시하는 컨테이너화된 Python 웹 애플리케이션을 만들 것입니다. 이 튜토리얼은 Ubuntu/Debian 기반 Linux 배포판에서 작동합니다.
🔹 시스템 준비
시작하기 전에 시스템 패키지를 업데이트하고 업그레이드합니다:
sudo apt update
sudo apt upgrade -y
Docker와 기타 필요한 종속성을 설치합니다:
sudo apt install ca-certificates curl gnupg
Docker 공식 GPG 키 추가
sudo install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo tee /etc/apt/keyrings/docker.asc > /dev/null
sudo chmod a+r /etc/apt/keyrings/docker.asc
Docker 저장소 추가
echo "deb [signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
Docker 설치
sudo apt update
sudo apt install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
설치 확인:
docker --version
Docker 시작 및 자동 시작 설정:
sudo systemctl enable --now docker
Docker 상태 확인:
sudo systemctl status docker
🔹 Docker Compose 플러그인 설치
Ubuntu에서는 이제 독립 실행 파일 대신 Docker Compose 플러그인을 사용합니다:
sudo apt install docker-compose-plugin -y
설치 확인:
docker compose version
Python Pip 설치 (종속성 관리)
sudo apt install python3-pip
python3 -m pip install --upgrade pip
🔹 프로젝트 디렉터리 만들기
디렉터리 구조를 설정합니다:
mkdir docker-projects
cd docker-projects
🔹 Python 웹 애플리케이션 만들기
app.py 파일을 생성합니다:
touch app.py
nano app.py
다음 Python Flask 코드를 붙여넣습니다:
from flask import Flask
import redis
app = Flask(__name__)
cache = redis.Redis(host='redis', port=6379)
def get_hit_count():
try:
return cache.incr('hits')
except redis.exceptions.ConnectionError:
return 1
@app.route('/')
def hello():
count = get_hit_count()
return f"Hello World! You have visited {count} times."
if __name__ == "__main__":
app.run(host="0.0.0.0", port=5000)
파일을 저장합니다 (CTRL + X, 그 다음 Y).
🔹 종속성 정의
requirements.txt 파일을 생성합니다:
touch requirements.txt
nano requirements.txt
requirements.txt에 다음 내용을 추가합니다:
Flask
redis
저장합니다 (CTRL + X, 그 다음 Y).
🔹 Dockerfile 만들기
Dockerfile을 생성합니다:
touch Dockerfile
nano Dockerfile
다음 Dockerfile 구성을 붙여넣습니다:
FROM python:3.9
WORKDIR /app
COPY . .
RUN pip install -r requirements.txt
CMD ["python", "app.py"]
저장합니다 (CTRL + X, 그 다음 Y).
🔹 Docker Compose 설정
docker-compose.yml 파일을 생성합니다:
touch docker-compose.yml
nano docker-compose.yml
다음 Docker Compose 구성을 붙여넣습니다:
version: '3'
services:
web:
build: .
ports:
- "5000:5000"
depends_on:
- redis
redis:
image: "redis:alpine"
저장합니다 (CTRL + X, 그 다음 Y). ⚠ YAML 파일은 들여쓰기에 민감하니 실행 전에 반드시 검증하세요!
🔹 프로젝트 빌드 및 실행
docker-projects 디렉터리에 있는지 확인합니다:
cd docker-projects
컨테이너를 시작합니다:
sudo docker-compose up --build
🔹 웹 앱 테스트
브라우저를 열고 주소에 접속합니다. 다음과 같은 화면이 표시됩니다:
Hello World! You have visited 1 times.
페이지를 새로 고침하면 방문자 수가 증가합니다.
🔹 컨테이너 중지
작업이 끝나면 컨테이너를 종료합니다:
sudo docker-compose down