CodeGym /コース /Docker SELF /Dockerの使い方デモ

Dockerの使い方デモ

Docker SELF
レベル 23 , レッスン 0
使用可能

Dockerコースの最終レベルへようこそ!

このレベルでは、これまで習得してきた知識とスキルを全部まとめます。

講義の中では、知らないプログラミング言語や技術が出てくるかもしれません。ポートを設定したり、メソッド名を追加する必要があるかもしれませんが、それはすでに99%完成しているコードを基に行います。

知らないことが出てきても心配しないでね。それは意図的に「知らないけど、すぐに理解できる」というスキルを向上させるために設計されています。

1.1 課題設定

ちょっとしたマルチコンテナアプリを作って、課題設定から完成品のデモまで、開発プロセスを1つずつ進めていこうね。

目標: タスク管理用のマルチコンテナアプリを作成することで、ユーザーがタスクを作成、編集、削除し、他のユーザーに割り当てられるようにする。アプリは主に3つのコンポーネントから構成されるよ: 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. プロジェクト構造の作成:
    • プロジェクト用のディレクトリと各サービス用の基本的なサブディレクトリを作成してね:
ターミナル

mkdir task_management_app
cd task_management_app
mkdir frontend backend database
        
  1. プロジェクトの初期化:
    • frontendディレクトリ内で新しいReactJSプロジェクトを初期化してね:
ターミナル

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

• backendディレクトリ内でPython/Flaskアプリケーションの構造を作成してね:

ターミナル

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を作成してね(必要なら):

ターミナル

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 "こんにちは、タスク管理アプリ!"
    

ファイル 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