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
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の主な特徴
コンテナ:
Dockerコンテナは、アプリケーションとその依存関係を一緒にパッケージ化します。これにより、異なる環境間での互換性問題を解消します。
イメージ:
Dockerイメージは、コンテナの実行可能なテンプレートです。イメージはバージョン管理され、イメージを使っていつでも新しいコンテナを作成できます。
ポータビリティ:
Dockerコンテナは軽量で迅速に起動でき、どこでも一貫して動作するため、開発環境から本番環境までの移行が容易です。
効率性:
コンテナは仮想マシン(VM)と比較してリソース効率が高く、より多くのコンテナを単一のホスト上で実行できます。
Dockerを使った開発の流れ
Dockerfileの作成:
アプリケーションの環境を定義したDockerfileを作成します。
Dockerイメージのビルド:
Dockerfileを基にDockerイメージをビルドします。
Dockerコンテナの起動:
ビルドしたイメージからコンテナを起動し、アプリケーションを実行します。
Docker Composeの使用:
複数のコンテナを管理するためにDocker Composeを使用し、設定ファイルでサービスの定義を行います。
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とGitにファイルを作りました。GitはGit側にバックアップを置くイメージです。Dockerは開発環境側にDockerfileとdocker-compose.ymlファイルを作っておくとDocker側がその環境でどこかにビルドしてくれるイメージでしょうか。
私は一旦そんな感じで覚えておきます。
git add .
git commit -m "Your commit message"
git push origin main
あっ、これを忘れずに
次回はいよいよAWSにビルドしたいと思います。
この記事が気に入ったらサポートをしてみませんか?