見出し画像

PYTHONではじめてのWEBサイトを作成 13

PYTHONではじめてのWEBサイトを作成 13


あーだいぶサボってしまってた。。。
仕事が忙しく間が空いてしまうととっつき難くなるね。

でも、気を取り直して始めましょう!

最終的にはDockerで管理したいので今日はとりあえずgithubとdocker用にファイルを作っていきます。

かなりソースコードを忘れています。

このブログが備忘録になって役立っています。

最終的にはDockerで管理したい

Github

gitのアカウントは以前作っていましたので
リポジトリにbanhmiloveを作りました。

とりあえず.Djangoにgitignoreファイルを作成
これは無視したいファイルやディレクトリをリストアップするそうです。
こういうのは後から逆に覚えていきますので効用は後から学べば良いと考えています。動かなくなったらやり直し。

touch .gitignore
echo "*.pyc
__pycache__/
db.sqlite3
.env
*.log
" > .gitignore


Gitへ初回コミット

ターミナルで

git add .
git commit -m "Initial commit"


GitHubリポジトリの作成

GitHubにログインし、新しいリポジトリを作成します。以下のコマンドを使用してリモートリポジトリを追加し、プッシュ。
yourusername/your-repository.gitは自分のリポジトリ

git remote add origin https://github.com/yourusername/your-repository.git
git branch -M main
git push -u origin main


githubにpush


Gitコマンド例


覚えなくても良いと思いますが

# 現在のリモートリポジトリを確認
git remote -v

# リモートリポジトリの削除
git remote remove origin

# 新しいリモートリポジトリの追加
git remote add origin https://github.com/naokkawamoto/banhmilove.git

# 変更を確認
git remote -v

# 変更をプッシュ
git push -u origin main


Dockerfileの作成

ルートディレクトリにdockefileを作成

touch Dockerfile

Dockerfileの編集

# Use the official Python image.
FROM python:3.8-slim

# Set environment variables
ENV PYTHONDONTWRITEBYTECODE 1
ENV PYTHONUNBUFFERED 1

# Install dependencies
RUN apt-get update \
    && apt-get install -y --no-install-recommends \
       build-essential \
       gcc \
    && apt-get clean \
    && rm -rf /var/lib/apt/lists/*

# Set work directory
WORKDIR /code

# Install dependencies
COPY requirements.txt /code/
RUN pip install --upgrade pip
RUN pip install -r requirements.txt

# Copy project
COPY . /code/


Dockerとは

Dockerは、アプリケーションとその依存関係をパッケージ化して、どこでも一貫して動作させることができるコンテナ技術です。Dockerを使用すると、開発環境、ステージング環境、本番環境の間で一貫した動作を保証することができます。これも使いながら覚えます。


Dockerの主な特徴

  1. コンテナ:

    • Dockerコンテナは、アプリケーションとその依存関係を一緒にパッケージ化します。これにより、異なる環境間での互換性問題を解消します。

  2. イメージ:

    • Dockerイメージは、コンテナの実行可能なテンプレートです。イメージはバージョン管理され、イメージを使っていつでも新しいコンテナを作成できます。

  3. ポータビリティ:

    • Dockerコンテナは軽量で迅速に起動でき、どこでも一貫して動作するため、開発環境から本番環境までの移行が容易です。

  4. 効率性:

    • コンテナは仮想マシン(VM)と比較してリソース効率が高く、より多くのコンテナを単一のホスト上で実行できます。


Dockerを使った開発の流れ

  1. Dockerfileの作成:

    • アプリケーションの環境を定義したDockerfileを作成します。

  2. Dockerイメージのビルド:

    • Dockerfileを基にDockerイメージをビルドします。

  3. Dockerコンテナの起動:

    • ビルドしたイメージからコンテナを起動し、アプリケーションを実行します。

  4. Docker Composeの使用:

    • 複数のコンテナを管理するためにDocker Composeを使用し、設定ファイルでサービスの定義を行います。

  5. AWSなどのクラウド環境へのデプロイ:

    • DockerコンテナをAWS EC2などのクラウド環境にデプロイし、スケーラブルなインフラストラクチャを構築します。

すでにDockerアカウントとDockerアプリをMacにインストールしています。
作業に戻りましょう。


Docker-compose.ymlの作成手順

ルートにdocker-compose.yml ファイルを作成

touch docker-compose.yml
version: '3.8'

services:
  web:
    build: .
    command: python manage.py runserver 0.0.0.0:8000
    volumes:
      - .:/code
    ports:
      - "8000:8000"
    env_file:
      - .env


docker-compose.yml は、Docker Composeを使用して複数のDockerコンテナを定義し、起動するための設定ファイルです。これにより、複数のサービス(例:Webアプリケーション、データベース、キャッシュサーバーなど)を一括して管理できます。将来的にpostgresにしようと思いますが、現状のSqlite3で進めます。

version: '3.8'  # Docker Composeのバージョン

services:  # 定義するサービス
  web:  # Webアプリケーションのサービス
    build: .  # Dockerfileのあるディレクトリを指定
    command: python manage.py runserver 0.0.0.0:8000  # コンテナ起動時に実行するコマンド
    volumes:  # ホストとコンテナ間で共有するボリューム
      - .:/code
    ports:  # ホストとコンテナ間で公開するポート
      - "8000:8000"
    env_file:  # 環境変数を定義したファイルを指定
      - .env
  

次のステップでは、Dockerイメージのビルドとコンテナの起動を行います。その後、コンテナが正しく起動し、アプリケーションが期待通りに動作していることを確認します。


requirements.txt ファイルの作成

次に、プロジェクトの依存関係を記述した requirements.txt ファイル

プロジェクトのルートディレクトリで以下のコマンドを実行し、現在のPython環境でインストールされているパッケージを requirements.txt に保存

pip freeze > requirements.txt



Dockerイメージのビルド

docker-compose.yml が正しく作成されたので、以下のコマンドを使ってDockerイメージをビルド

docker-compose build


Dockerコンテナの起動

イメージのビルドが成功したら、次にコンテナを起動

docker-compose up -d


コンテナの状態確認:

コンテナが正常に起動しているか確認

docker-compose ps


データベースのマイグレーション:

Djangoアプリケーションを使用している場合、データベースのマイグレーションを実行してテーブルを作成

docker-compose exec web python manage.py migrate


動作確認:

ブラウザで http://localhost:8000 にアクセスし、アプリケーションが正しく動作していることを確認


Dockerからビルド


まとめ

今回はDockerとGitにファイルを作りました。GitはGit側にバックアップを置くイメージです。Dockerは開発環境側にDockerfileとdocker-compose.ymlファイルを作っておくとDocker側がその環境でどこかにビルドしてくれるイメージでしょうか。

私は一旦そんな感じで覚えておきます。

git add .
git commit -m "Your commit message"
git push origin main

あっ、これを忘れずに

次回はいよいよAWSにビルドしたいと思います。


この記事が気に入ったらサポートをしてみませんか?