新しい Django プロジェクトを開始するには、 django-admin
コマンドを使用する必要があります。このコマンドを使用すると、Django アプリケーションのプロジェクト ディレクトリといくつかの基本ファイルを作成できます。たとえば、 my_project
というプロジェクトを作成する場合は、ターミナルで次のコマンドを実行できます。
django-admin startproject my_project
§──
manage.py
ファイルは、開発サーバーの実行、データベース移行の作成、コードのテストなど、プロジェクトのさまざまなタスクを実行できるようにするスクリプトです。 project/
ディレクトリには、プロジェクトの設定ファイルと構成ファイルが含まれています。
settings.py
ファイルは、データベース接続、インストールされているアプリ、ミドルウェアなど、プロジェクトの主な設定を定義します。 urls.py
ファイルは、プロジェクトの URL をアプリのビューにマップします。
python manage.py runserver
manage.py
: アプリの作成、データベースの移行、コードのテストなど、プロジェクトを管理するためのさまざまなコマンドを提供するスクリプト。
project/
: プロジェクトの設定ファイルと構成ファイルが含まれるディレクトリ。このディレクトリ内の主なファイルは次のとおりです。
`settings.py`: A file that defines the main settings for your project, such as the database connection, the installed apps, and the middleware. You can customize this file to suit your needs and preferences. `urls.py`: A file that maps the URLs of your project to the views of your apps. You can define different URL patterns for different parts of your web application.
apps/
: プロジェクトを構成するすべての Django アプリが含まれるディレクトリ。各 Django アプリは、Web アプリケーションに特定の機能を提供する個別の Python パッケージです。独自のアプリを作成することも、サードパーティ ソースからの既存のアプリを使用することもできます。
python manage.py runserver
python manage.py test
Ran 1 test in 0.001s Ok
FROM python:3.9 #Install Django and other required packages RUN pip install django # Copy the Django project files into the image COPY ./app # Set the working directory WORKDIR /app # Start the Django development server CMD ["python", "manage.py", "runserver", "0.0.0.0:8000"]
version: "3.9" services: web: build: ports: -"8000:8000" volumes -./:/app db: image: postgres:14.0-alpine volumes: -./postgres:/var/lib/postgresql/data
この docker-compose.yml ファイルは、 web
とdb
という 2 つのサービスを定義します。 web
サービスは、前のセクションで作成した Dockerfile から Docker イメージを構築します。 web
サービスは、Django 開発サーバーにアクセスできるように、ホスト マシン上のポート 8000 も公開します。
db
サービスは、公式の PostgreSQL Docker イメージを使用します。 db
サービスは、ホスト マシン上のpostgres
ディレクトリをコンテナ内の/var/lib/postgresql/data
ディレクトリにマウントします。これにより、コンテナーの再起動間でデータベース ファイルが確実に保持されます。
docker-compose up -d
//localhost:8000/admin/
で Django 管理ページにログインすることもできます。デフォルトでは、ユーザー名とパスワードはadmin
とadmin
です。
- プロフィール ページに移動し、 [リポジトリ]の横にある[新規]ボタンをクリックします。
- リポジトリにdjango-docker-app
などの名前を付け、必要に応じて説明を追加します。
- [リポジトリの作为]ボタンをクリックします。
- ターミナルで Django プロジェクト フォルダーに移動し、 git status
と入力してリポジトリの現在の状態を確認します。次のようなものが表示されるはずです。
On branch main Your branch is up to date with 'origin/main'. Changes not staged for commit: (use "git add <file>..." to update what will be committed) (use "git restore <file>..." to discard changes in working directory) modified: Dockerfile modified: docker-compose.yml modified: requirements.txt no changes added to commit (use "git add" and/or "git commit -a")
これは、コミット用にステージングされていない変更されたファイルがいくつかあることを意味します。コミットのためにステージングするには、 git add
コマンドを使用する必要があります。
- git add
と入力します。変更されたすべてのファイルをコミットのためにステージングします。あるいは、 git add
Dockerfile docker-compose.yml
requirements.txt
など、ステージングするファイル名を指定することもできます。
- git status
再度入力すると、リポジトリの更新された状態が表示されます。次のようなものが表示されるはずです。
On branch main Your branch is up to date with 'origin/main'. Changes to be committed: (use "git restore --staged <file>..." to unstage) modified: Dockerfile modified: docker-compose.yml modified: requirements.txt
これは、コミットのためにステージングされた変更がいくつかあることを意味します。それらをコミットするには、 git commit
コマンドを使用する必要があります。
- git commit -m "Add Docker configuration files"
実行内容を説明するメッセージとともに段階的な変更をコミットします。あるいは、 -m
フラグを省略して、 git commit
と入力した後に開くエディターに長いメッセージを入力することもできます。
- git status
再度入力して、リポジトリの最終状態を確認します。次のようなものが表示されるはずです。
On branch main Your branch is ahead of 'origin/main' by 1 commit. (use "git push" to publish your local commits) nothing to commit, working tree clean
これは、まだリモート リポジトリにプッシュされていないコミットが 1 つあることを意味します。プッシュするにはgit push
コマンドを使用する必要があります。
- 「 git push origin main
と入力して、ローカル コミットを GitHub 上のリモート リポジトリにプッシュします。
あるいは、 git push origin main
など、プッシュするリモート名とブランチ名を指定することもできます。
- に移動し、 [サインアップ]ボタンをクリックします。
- 名前、メールアドレス、パスワードなどの必要的な情報を入力します。 - Python などの一般な開発言語を選択します。- [無料アカウントの作为]ボタンをクリックします。
- メールを確認し、リンクをクリックしてアカウントを確認してください。
- ターミナルを開き、 heroku --version
と入力して、インストールが成功したことを確認します。次のようなものが表示されるはずです。
heroku/7.59.0 win32-x64 node-v12.21.0
- ターミナルで Django プロジェクト フォルダーに移動し、 heroku login
と入力して、Heraku CLI ツールを使用して Heroku アカウントにログインします。電子メールとパスワードを入力するか、Web ブラウザを使用して認証を行うよう求められる場合があります。
- heroku create django-docker-app
と入力して、 django-docker-app
という名前の新しい Heroku アプリを作成します。あるいは、名前を省略して Heroku にランダムな名前を生成させることもできます。次のようなものが表示されるはずです。
Creating ⬢ django-docker-app... done //django-docker-app.herokuapp.com/ | //git.heroku.com/django-docker-app.git
- 「 heroku config:set SECRET_KEY=<your_secret_key>
、Django プロジェクトのSECRET_KEY設定の環境変数を設定します。 <your_secret_key>
などのツールを使用して生成できるランダムな文字列に置き換える必要があります。
あるいは、 settings.pyファイルにある既存の秘密キーを使用することもできますが、これはセキュリティ上の理由からお勧めできません。
- 「 heroku addons:create heroku-postgresql:hobby-dev
と入力して、無料の PostgreSQL データベース アドオンを Heroku アプリに追加します。これにより、Django プロジェクトの新しいデータベースが作成され、Django プロジェクトのDATABASE_URL設定の環境変数が設定されます。次のようなものが表示されるはずです。
Creating heroku-postgresql:hobby-dev on ⬢ django-docker-app... free Database has been created and is available ! This database is empty. If upgrading, you can transfer ! data from another database with pg:copy Created postgresql-curved-12345 as DATABASE_URL Use heroku addons:docs heroku-postgresql to view documentation
これは、名前がPostgreSQL-curved-12345 、URL がDATABASE_URL のPostgreSQL データベース アドオンを追加したことを意味します。
- heroku config
と入力すると、Heraku アプリに設定した環境変数のリストが表示されます。次のようなものが表示されるはずです。
=== django-docker-app Config Vars DATABASE_URL: postgres://<username>: <password>@<host>:<port>/<database> SECRET_KEY: <your_secret_key>
これは、Django プロジェクト設定で使用できる 2 つの環境変数DATABASE_URLとSECRET_KEYがあることを意味します。
「 heroku
」コマンドを使用して Django プロジェクトを Heroku にデプロイするにはどうすればよいですか?
heroku
コマンドを使用して Django プロジェクトを Heroku にデプロイするには、次の手順に従う必要があります。
- ターミナルで Django プロジェクト フォルダーに移動し、 heroku container:login
と入力して Heroku CLI ツールを使用して Heroku Container Registry にログインします。これにより、Docker イメージを Heroku にプッシュできるようになります。
- 「 heroku container:push web -a django-docker-app
入力して、Docker イメージをビルドして Heroku にプッシュします。 Heroku アプリの名前を指定する必要があります。この場合はdjango-docker-appです。次のようなものが表示されるはずです。
=== Building web (Dockerfile) Sending build context to Docker daemon 1.024kB Step 1/9 : FROM python:3.9-slim ---> 7f5b6ccd03e9 Step 2/9 : ENV PYTHONUNBUFFERED 1 ---> Using cache ---> 64b5d0e40a22 Step 3/9 : RUN mkdir /code ---> Using cache ---> 4d8c638f2b6c Step 4/9 : WORKDIR /code ---> Using cache ---> e69c02a028cd Step 5/9 : COPY requirements.txt /code/ ---> Using cache ---> 8f0f3e0f2d8c Step 6/9 : RUN pip install -r requirements.txt ---> Using cache ---> 0f7b497d81ed Step 7/9 : COPY . /code/ ---> Using cache ---> c0a8e9a32b16 Step 8/9 : EXPOSE 8000 ---> Using cache ---> a1d36a4a2da4 Step 9/9 : CMD ["gunicorn", "django_docker.wsgi", "--bind", "0.0.0.0:8000"] ---> Using cache ---> f7f3c0418a1d Successfully built f7f3c0418a1d Successfully tagged registry.heroku.com/django-docker-app/web:latest === Pushing web (Dockerfile) The push refers to repository [registry.heroku.com/django-docker-app/web] f7f3c0418a1d: Pushed latest: digest: sha256:6cbbf22cf6aa60e0343e6d8e7c4c2eeb2e cb8fd5e82a42dfe5f4aeeb15af89ec size: 528 Your image has been successfully pushed. You can now release it with the 'container:release' command.
- heroku container:release web -a django-docker-app
入力して、Docker イメージを Heroku アプリにリリースします。次のようなものが表示されるはずです。
Releasing images web to django-docker-app... done
- heroku run python manage.py migrate -a django-docker-app
入力して、Heraku アプリでデータベース移行を実行します。これにより、Django プロジェクトに必要なテーブルとインデックスが PostgreSQL データベースに作成されます。次のようなものが表示されるはずです。
Running python manage.py migrate on ⬢ django-docker-app... up, run.1234 (Free) Operations to perform: Apply all migrations: admin, auth, contenttypes, sessions, polls Running migrations: Applying contenttypes.0001_initial... OK Applying auth.0001_initial... OK Applying admin.0001_initial... OK Applying admin.0002_logentry_remove_auto_add... OK Applying admin.0003_logentry_add_action_flag_choices... OK Applying contenttypes.0002_remove_content_type_name... OK Applying auth.0002_alter_permission_name_max_length... OK Applying auth.0003_alter_user_email_max_length... OK Applying auth.0004_alter_user_username_opts... OK Applying auth.0005_alter_user_last_login_null... OK Applying auth.0006_require_contenttypes_0002... OK Applying auth.0007_alter_validators_add_error_messages... OK Applying auth.0008_alter_user_username_max_length... OK Applying auth.0009_alter_user_last_name_max_length... OK Applying auth.0010_alter_group_name_max_length... OK Applying auth.0011_update_proxy_permissions... OK Applying auth.0012_alter_user_first_name_max_length... OK Applying polls.0001_initial... OK Applying sessions.0001_initial... OK
- heroku open -a django-docker-app
入力して、デプロイした Web アプリケーションを Web ブラウザで開きます。 Django プロジェクトが Heroku 上で実行されているのが確認できるはずです。
heroku
コマンドを使用して、Django プロジェクトが Heroku に正常にデプロイされました。これで、Web アプリケーションを楽しんだり、他のユーザーと共有したりできるようになります。
次を読む: CI/CD は、迅速かつ信頼性の高いソフトウェア配信に不可欠です。 CI/CD パイプラインを最適化して効率を最大化するには、適切なツールを選択し、ワークフローを合理化し、自動テストと QA を使用し、ビルドを並列化し、モニタリングとフィードバック ループを使用し、セキュリティ チェックを実行し、パイプラインを継続的に改善します。続きを読む
関連記事: DockerCon 2023 で学んだすべて続きを読む