🐳
【Docker & Django & Vue.js PostgreSQL】環境構築手順②
環境構築完成イメージ!
イメージ図
前回の記事
前回の記事の続きを解説。
9.Djangoアプリケーションフォルダの作成とurls.pyの作成
アプリケーションフォルダ作成画面
アプリケーションフォルダ作成コマンド
docker-compose -f docker/compose//docker-compose.dev.yml exec backend python manage.py startapp api
アプリケーションフォルダ内にurls.pyを作成する(Windowsでの実行コマンド)
New-Item backend/api/urls.py
10.Django管理者ユーザーの作成
管理者ユーザーの作成
docker-compose -f docker/compose//docker-compose.dev.yml exec backend python manage.py createsuperuser
11.Djangoのsettings.pyの設定
セキュリティーの設定
SECURITY WARNING(※記載部分に追加)
# SECURITY WARNING
import os
DEBUG = True
ALLOWED_HOSTS = []
INTERNAL_IPS = [
'127.0.0.1',
]
DEBUG_TOOLBAR_CONFIG = {
'SHOW_TOOLBAR_CALLBACK': lambda request: True,
'HIDE_DJANGO_SQL': False,
}
アプリケーションフォルダ追加の設定
INSTALLED_APPS(※記載部分に追加)
INSTALLED_APPS = [
...
'<app_name>', # 追加(今回だと'api'を追加)
'rest_framework',
'corsheaders',
]
画像・動画の設定
画像・動画の設定(※記載部分に追加および上書き)
# Static files
STATIC_URL = '/static/'
STATIC_ROOT = os.path.join(BASE_DIR, 'staticfiles')
STATICFILES_DIRS = [
os.path.join(BASE_DIR, 'theme', 'static'),
]
# Media files
MEDIA_URL = '/media/'
MEDIA_ROOT = os.path.join(BASE_DIR, 'media')
言語・時間の設定
言語・時間の設定(※記載部分に上書き)
LANGUAGE_CODE = 'ja'
TIME_ZONE = 'Asia/Tokyo'
USE_I18N = True
USE_TZ = True
テンプレートの設定
settings.pyのDIRSへ以下を追加
TEMPLATES = [
{
'BACKEND': 'django.template.backends.django.DjangoTemplates',
'DIRS': [
os.path.join(BASE_DIR, 'templates'), # 追加
],
'APP_DIRS': True,
'OPTIONS': {
'context_processors': [
'django.template.context_processors.debug',
'django.template.context_processors.request',
'django.contrib.auth.context_processors.auth',
'django.contrib.messages.context_processors.messages',
],
},
},
]
ミドルウェアの設定
settings.pyのMIDDLEWAREへ以下を追加
MIDDLEWARE = [
'corsheaders.middleware.CorsMiddleware',
...
]
CORSの設定
settings.pyへ以下を追加
CORS_ALLOW_ALL_ORIGINS = True # ローカル環境で全てのオリジンを許可する設定。
データベースの設定
データベース設定(※記載部分に上書き)
from dotenv import load_dotenv
load_dotenv()
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.postgresql',
'NAME': os.getenv('DATABASE_NAME', 'default_db'),
'USER': os.getenv('DATABASE_USER', 'default_user'),
'PASSWORD': os.getenv('DATABASE_PASSWORD', ''),
'HOST': os.getenv('DATABASE_HOST', 'localhost'),
'PORT': os.getenv('DATABASE_PORT', '5432'),
}
}
12.DBの設定とマイグレーション
docker/env/db.envの内容
docker/env/db.env
POSTGRES_DB=mydatabase
POSTGRES_USER=myuser
POSTGRES_PASSWORD=mypassword
POSTGRES_HOST=db
POSTGRES_PORT=5432
docker/env/backend.dev.envの内容
docker/env/db.env
DJANGO_SECRET_KEY=dev-secret-key
DEBUG=True
DATABASE_NAME=mydatabase
DATABASE_USER=myuser
DATABASE_PASSWORD=mypassword
DATABASE_HOST=db
DATABASE_PORT=5432
ALLOWED_HOSTS=localhost,127.0.0.1
マイグレーションの実行
makemigrationsの実行
docker-compose -f docker/compose/docker-compose.dev.yml exec backend python manage.py makemigrations
migrateの実行
docker-compose -f docker/compose/docker-compose.dev.yml exec backend python manage.py migrate
13.DBにテーブルが作成されているかを確認する
DBコンテナにログインする
docker exec -it compose-db-1 psql -U myuser -d mydatabase -W
DB内のテーブルの一覧を確認することができる
/dt
出力結果
テーブルが作成されている
docker exec -it compose-db-1 psql -U myuser -d mydatabase -W
Password:
psql (13.20 (Debian 13.20-1.pgdg120+1))
Type "help" for help.
mydatabase=# \dt
List of relations
Schema | Name | Type | Owner
--------+----------------------------+-------+--------
public | auth_group | table | myuser
public | auth_group_permissions | table | myuser
public | auth_permission | table | myuser
public | auth_user | table | myuser
public | auth_user_groups | table | myuser
public | auth_user_user_permissions | table | myuser
public | django_admin_log | table | myuser
public | django_content_type | table | myuser
public | django_migrations | table | myuser
public | django_session | table | myuser
(10 rows)
Discussion