CodeGym /행동 /Docker SELF /Docker 작업 데모

Docker 작업 데모

Docker SELF
레벨 23 , 레슨 0
사용 가능

Docker 강좌 마지막 단계에 오신 걸 환영합니다!

이번 단계에서는 지금까지 배운 지식과 기술을 종합해볼 거예요.

강의 중에 여러분에게 익숙하지 않은 프로그래밍 언어나 기술이 나올 수도 있어요. 여러분은 포트를 설정하거나 메서드 이름을 추가해야 할 수도 있는데, 이 모든 작업은 이미 99% 완료된 코드 기반에서 진행됩니다.

만약 어떤 것이 낯설게 느껴진다면 걱정하지 마세요. 이는 "이건 처음인데, 빠르게 이해할 수 있어야 해"라는 능력을 향상시키기 위한 의도적인 설계입니다.

1.1 문제 정의

자, 작은 멀티컨테이너 애플리케이션을 만들어보고, 개발 프로세스를 단계별로 분석해 보자: 문제 정의부터 완성된 제품 시연까지.

목표: 작업 관리를 위한 멀티컨테이너 애플리케이션을 만들어서, 사용자들이 작업을 만들고, 수정하고, 삭제하고 다른 사용자에게 할당할 수 있도록 하는 거야. 이 애플리케이션은 세 가지 주요 구성 요소로 구성될 거야: ReactJS 프론트엔드, Python (Flask) 백엔드, 그리고 PostgreSQL 데이터베이스.

핵심 과제들:

  1. 애플리케이션 각 구성 요소에 대한 기능 요구 사항 정의.
  2. 사용할 기술 및 도구 선택.
  3. 개발 환경 준비.

1.2 기능 요구사항 정의

작업 관리 애플리케이션의 기능 요구사항:

  1. 사용자 등록 및 인증:
    • 사용자는 시스템에 등록할 수 있어.
    • 사용자는 시스템에 인증을 할 수 있어.
  2. 작업 관리:
    • 사용자는 작업을 생성할 수 있어.
    • 사용자는 작업을 수정할 수 있어.
    • 사용자는 작업을 삭제할 수 있어.
    • 사용자는 작업 목록을 볼 수 있어.
    • 사용자는 다른 사용자에게 작업을 할당할 수 있어.
  3. 작업 보기 및 필터링:
    • 사용자는 작업을 상태(완료/미완료)별로 필터링할 수 있어.
    • 사용자는 다른 사용자에게 할당된 작업을 볼 수 있어.

1.3 사용 기술 및 도구 정의

이 애플리케이션을 구현하기 위해 다음 기술과 도구를 사용할 거야:

  1. Frontend:
    • ReactJS: 사용자 인터페이스를 만드는 라이브러리.
    • Axios: HTTP 요청을 실행하는 라이브러리.
  2. Backend:
    • Python: 서버 측을 개발하기 위한 프로그래밍 언어.
    • Flask: REST API를 만드는 웹 프레임워크.
    • SQLAlchemy: 데이터베이스와 상호작용하기 위한 ORM.
  3. Database:
    • PostgreSQL: 사용자 및 작업에 대한 정보를 저장하는 관계형 데이터베이스.
  4. 컨테이너화 및 오케스트레이션:
    • Docker: 애플리케이션 컨테이너화를 위한 플랫폼.
    • Docker Compose: 다중 컨테이너 애플리케이션을 관리하기 위한 도구.

1.4 개발 환경 준비

프로젝트를 성공적으로 수행하려면 개발 환경을 설정하고 필요한 도구가 모두 설치되었는지 확인해야 해.

환경 준비 단계:

  1. Docker 설치:
    • 아직 설치하지 않았다면, 1레벨 강의 4로 돌아가거나 Docker 공식 웹사이트의 지침을 따르세요.
  2. Docker Compose 설치:
    • Docker Compose가 아직 설치되지 않았다면, 4레벨 강의 2를 참고하거나 Docker Compose 공식 웹사이트의 지침을 따르세요.
  3. 프로젝트 구조 생성:
    • 프로젝트를 위한 디렉토리와 각 서비스를 위한 기본 하위 디렉토리를 생성하세요:
Terminal

mkdir task_management_app
cd task_management_app
mkdir frontend backend database
        
  1. 프로젝트 초기화:
    • frontend 디렉토리 안에서 새로운 ReactJS 프로젝트를 초기화 하세요:
Terminal

cd frontend
npx create-react-app .
cd ..
        

• backend 디렉토리 안에서 Python/Flask 애플리케이션을 위한 구조를 생성하세요:

Terminal

cd backend
mkdir app
touch app/__init__.py
touch app/models.py
touch app/routes.py
touch run.py
touch requirements.txt
cd ..
        

• database 디렉토리 안에서 PostgreSQL을 위한 Dockerfile을 생성하세요 (필요한 경우):

Terminal

cd database
touch Dockerfile
cd ..
        

1.5 파일 내용 예제:

파일 backend/app/__init__.py:

Python

from flask import Flask
from flask_sqlalchemy import SQLAlchemy

app = Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI'] = 'postgresql://taskuser:taskpassword@database:5432/taskdb'
db = SQLAlchemy(app)

from app import routes
    

파일 backend/app/models.py:

Python

from app import db

class User(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    username = db.Column(db.String(80), unique=True, nullable=False)
    tasks = db.relationship('Task', backref='owner', lazy=True)

class Task(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    title = db.Column(db.String(120), nullable=False)
    description = db.Column(db.Text, nullable=True)
    owner_id = db.Column(db.Integer, db.ForeignKey('user.id'), nullable=False)
    

파일 backend/app/routes.py:

Python

from app import app

@app.route('/')
def index():
    return "안녕, Task Management App!"
    

파일 backend/run.py:

Python

from app import app

if __name__ == '__main__':
    app.run(host='0.0.0.0')
    

파일 backend/requirements.txt:

Text

Flask
Flask-SQLAlchemy
psycopg2-binary
    
코멘트
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION