🐳
【Docker】ブラウザリクエストとレスポンスの流れ
ローカルのブラウザからDockerコンテナへのリクエストとレスポンスの流れ
ブラウザからアクセスする
http://localhost:8000/
ここで重要なのが、docker-compose.yml
ファイル。
docker-compose.yml
version: '3.8'
web:
build: .
container_name: web
command: ["python", "manage.py", "runserver", "0.0.0.0:8000"]
volumes:
- .:/app
ports:
- "8000:8000"
depends_on:
- db
environment:
- DEBUG=${DJANGO_DEBUG}
- DATABASE_NAME=${DB_NAME}
- DATABASE_USER=${DB_USER}
- DATABASE_PASSWORD=${DB_PASSWORD}
- DATABASE_HOST=${DB_HOST}
- DATABASE_PORT=${DB_PORT}
その中でも特に重要な部分が以下の部分。
# ローカルのアプリケーションフォルダをコンテナに共有する設定
volumes:
- .:/app
# ローカルPCのポート8000にアクセスされたら、そのままコンテナの8000番ポートにリダイレクトしてくれる、という設定
ports:
- "8000:8000"
ボリューム(共有)イメージ図
ホストPC コンテナ内
--------- ------------
web/ ─────────────▶ /app/ ← マウントポイント
イメージ図
[あなたのブラウザ]
↓アクセス (localhost:8000)
[ローカルPCの8000番ポート]
↓ Dockerのポートマッピング
[コンテナの8000番ポート(Django runserver)]
↓
[Djangoがレスポンス返す]
↓
[ブラウザに結果が表示される🎉]
コンテナのポート8000にアクセスがあって以降の詳細
まずはurls.pyの確認が行われる
ブラウザからのアクセス
http://localhost:8000/
urls.py
from django.urls import path
from . import views
urlpatterns = [
path('', views.home, name='home'), ← ここが呼び出される
path('about/', views.about, name='about'),
]
マッチしたビュー関数(またはクラスベースビュー)が呼び出される
urls.py
path('', views.home, name='home'), ←
Discussion