Centos8 で Docker を使用して Django プロジェクトをデプロイする詳細なチュートリアル

Centos8 で Docker を使用して Django プロジェクトをデプロイする詳細なチュートリアル

導入

この記事では、django + uwsgi + nginx デプロイメントを使用して、Docker に Django プロジェクトをデプロイする方法を紹介します。

記録されるのは学習過程なので、現在の上位バージョンが使用されます。

Pythonバージョンは3.8.3です
Djangoのバージョンは3.0.6です
nginxのバージョンは1.17.10です

さて、簡単な紹介の後、本題に入りましょう。

作業ディレクトリを作成する

プロジェクトと Dockerfile などのファイルを保存するための作業ディレクトリを作成します。

uwsgidocker を mkdir する

各ファイルについて簡単に説明する

docker-compose.yml: Docker Compose は、複数のコンテナで構成されるアプリケーションを定義および実行するために Docker によって提供されるコマンドライン ツールです。
            Compose を使用すると、YAML ファイルを通じてアプリケーションのサービスを宣言的に定義し、単一のコマンドでアプリケーションを作成して起動できます。
            最初はdocker-compose.ymlを使用していませんでした
Dockerfile: イメージをビルドするために使用されるテキスト ファイルです。テキスト コンテンツには、イメージをビルドするために必要な手順と指示が含まれています。
my_django: 新しく作成された Django プロジェクトで、主に ALLOWED_HOSTS = [] を ALLOWED_HOSTS = ["*"] に変更します。 
nginxconf: nginx イメージを作成するための nginx 構成と Dockerfile ファイルを含むフォルダーです。
pip.conf: pip の設定に関するもので、主に pip のダウンロードを高速化するために使用されます。
uwsgi_conf.ini: uwsgi 設定ファイル

注: Django プロジェクトの settings.py ファイルで、 ALLOWED_HOSTS = [] を ALLOWED_HOSTS = [" * "] に変更する必要があります。

uwsgiイメージを作成する

Dockerfile ファイルに従って uwsgi イメージを作成し、実行します。

Python:3.8.3 より
# ディレクトリを作成する RUN mkdir -p /usr/src/app
# 作業ディレクトリを設定する WORKDIR /usr/src/app

# pip.conf ファイルを /root/.pip/pip.conf にコピーします
pip.conf をコピー /root/.pip/pip.conf
# pip を更新
pip install --upgrade pip を実行します。
# Djangoとuwsgiをダウンロードする一般的なプロジェクトでは、requirement.txtのみをダウンロードする必要があります
pip install django && pip install uwsgi を実行します。
#現在のディレクトリ内のすべてのファイルをコピーし、プロジェクトと uwsgi 構成ファイルのみをコピーします COPY . /usr/src/app/
# 実行時にuwsgiを起動する
コマンド uwsgi --ini uwsgi_conf.ini
# ポートを公開 EXPOSE 80 8080 8000 8888

uwsgi 設定ファイル、公式ウェブサイト

[uwsgi]
# プロジェクトディレクトリ。現在のディレクトリにあるので、chdir = my_django と記述するだけです。
# uwsgi 起動ファイル、プロジェクトの下の wsgi.py
モジュール = my_django.wsgi
# メインスレッドの存在を許可する (true)
マスター = 真
# プロセス数 プロセス = 1
# プロジェクトが実行されるポートを指定するために使用します。ソケットと http を使用できます。私は簡単に表示できるように http を使用します。http = 0.0.0.0:8000
# ソケット = 0.0.0.0:8000

# http = 10.0.0.10:8000
# ソケット = 10.0.0.10:8008
# ソケット = /usr/src/app/my_django/uwsgi.sock
# サーバー終了時に環境を自動的にクリーンアップし、UNIX ソケット ファイルと PID ファイルを削除します。vacuum = true

さて、これら 2 つのファイルを使用して、uwsgi イメージを作成できます。次のコマンドを実行してイメージを生成します。

docker build -t myuwsgi ./

docker imagesを使用してイメージを表示する

uwsgiイメージを実行する

画像が作成されたので、次のステップでは画像を実行してブラウザで表示します。

次のコマンドを直接使用して、ポートを公開し、簡単に表示できるようにします。

docker run --rm -it --name webuwsgi -p 8000:8000 myuwsgi

運用結果

次に、ブラウザでアクセスし、IPとポートを入力して192.168.56.102:8000にアクセスします。

これは、uwsgi イメージが作成され、正常に実行できることが証明されます。

次のステップは、リバースプロキシ用のnginxイメージを作成することです。

Nginx イメージの作成

まずnginxconfディレクトリに入り、操作を簡単にするためにcd nginxconf/実行してからDockerfileファイルを編集します。

nginxから

# デフォルトの nginx 設定ファイルを削除します RUN rm -rf /etc/nginx/conf.d/default.conf
# 現在のディレクトリにある設定ファイルを /etc/nginx/conf.d/ ディレクトリにコピーします。 COPY nginx.conf /etc/nginx/conf.d/nginx.conf

エクスポーズ80

nginx.confファイルを編集する

サーバー{
 # リスニングポート listen 80;
 #ホスト名 server_name localhost;
 位置 / {
 uwsgi_params を含めます。
 # uwsgiサービスのIPとポート、
 プロキシパス http://192.167.0.2:8000;
 # uwsgi がソケットを使用する場合は、直接使用できます # uwsgi_pass 192.167.0.2:8000;
 proxy_set_header X-Real-IP $remote_addr;
 proxy_set_header ホスト $host;
 proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
 }
 
 場所 /static {
 # 静的ファイルのエイリアス /usr/share/nginx/html/static;
 }
}

uwsgiコンテナのIPはdocker inspectを使用して確認できます。

docker で webuwsgi を検査する

チェック

さて、次のステップはnginxイメージを作成することです。次のコマンドを使用してイメージを作成します。

docker build -t mynginx ./

イメージを表示するにはdockerイメージを使用します

Nginxイメージを実行する

画像が作成されたので、次のステップでは画像を実行してブラウザで表示します。

次のコマンドを直接使用して、ポートを公開し、簡単に表示できるようにします。

docker run --rm -it -p 80:80 --name nginxweb mynginx

運用結果

次に、ブラウザでアクセスし、IP アドレス 192.168.56.102 を直接入力します。

さて、これは docker 上で uwsgi+nginx を使用して Django プロジェクトをデプロイする方法です。

次に、 uwsgi+nginx+docker-composeを使用して Django プロジェクトをデプロイします。

Docker-compose の使用

docker-compose.yml ファイルを編集し、IP アドレスを割り当て、nginx および uwsgi 構成ファイルにいくつか変更を加えます。

docker-compose.yml ファイル

バージョン: '3'
サービス:
バージョン: '3'
サービス:
 uwsgi:
 建てる:
 コンテクスト: 。/
 画像: uwsgi
 再起動: 常に
 ネットワーク:
 ジャンゴ:
 ipv4_アドレス: 10.0.0.10
 ポート:
 - 「8000:8000」
 ボリューム:
 - /root/uwsgidocker/:/usr/src/app/:rw
 コマンド: uwsgi --ini /usr/src/app/uwsgi_conf.ini

 nginx:
 画像: myweb
 建てる:
 コンテキスト: ./nginxconf
 ポート:
 - 「80:80」
 - 「8080:8080」
 ボリューム:
 - /root/uwsgidocker/nginxconf/nginx.conf:/etc/nginx/conf.d/nginx.conf:rw
 再起動: 常に
 特権: true
 ネットワーク:
 ジャンゴ:
 ipv4_アドレス: 10.0.0.20
ネットワーク:
 ジャンゴ:
 ipam:
 設定:
 - サブネット: 10.0.0.0/24

uwsgi_conf.iniファイルで、IPを変更するだけです

[uwsgi]
chdir = my_django

モジュール = my_django.wsgi

uid = ルート
gid = ルート

マスター = 真

プロセス = 1

# http = 0.0.0.0:8000
# ソケット = 0.0.0.0:8000

# http = 10.0.0.10:8000
ソケット = 10.0.0.10:8008
# ソケット = /usr/src/app/my_django/uwsgi.sock

真空 = 真

nginx.confファイルで、同様にIPアドレスを変更します

サーバー{
 聞く 80;
 server_name ローカルホスト;
 位置 / {
 uwsgi_params を含めます。
 # プロキシパス http://192.167.0.2:8000;
 uwsgi_pass 192.167.0.2:8000;
 # proxy_set_header ホスト $host;
 # proxy_redirect をオフ;
 # proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
 # uwsgi_pass unix:/usr/src/app/my_django/uwsgi.sock;
 uwsgi_pass 10.0.0.10:8008;
 proxy_set_header X-Real-IP $remote_addr;
 proxy_set_header ホスト $host;
 proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
 }
 場所 /static {
 エイリアス /usr/share/nginx/html/static;
 }
}

OK、設定を少し変更したら、直接実行できます

docker-compose の実行

1. イメージのビルドの開始 &&コンテナの開始

docker-compose up または docker-compose up -d background run

2. 停止

docker-compose stop #コンテナを停止する

3. コンテナを停止して削除する

docker-compose ダウン

4. IP アドレスを入力して結果にアクセスします。

docker-composeを使うのはとても便利だと思いますか? ぜひ使ってみてください!

要約する

これで、Docker を使用して Centos8 に Django プロジェクトをデプロイする方法に関する詳細なチュートリアルに関するこの記事は終了です。Docker に Django プロジェクトをデプロイする方法の詳細については、123WORDPRESS.COM の以前の記事を検索するか、次の関連記事を引き続き参照してください。今後も 123WORDPRESS.COM を応援してください。

以下もご興味があるかもしれません:
  • CentOS7へのDjangoの導入の詳しい説明
  • DjangoプロジェクトをCentOsサーバーにデプロイする
  • Centos7+Django+Python3+MySQL+Alibaba Cloud 導入プロジェクトの全プロセスの詳細な説明
  • Centos8 の Django プロジェクトに nginx+uwsgi をデプロイするチュートリアル
  • Centos に Django サービス nginx+uwsgi をデプロイする方法
  • CentOS での Django プロジェクトのデプロイに関する詳細なチュートリアル
  • Django プロジェクトを CentOS にデプロイする方法

<<:  JavaScript で円形のプログレスバー効果を実装する

>>:  jsはクリックしてカードを切り替える機能を実現します

推薦する

MySQLのインストール時に発生する可能性のある問題

質問1:インストール中に net start mysql と入力すると、次のエラー メッセージが表示...

CentOS6 アップグレード glibc 操作手順

目次背景glibc 2.14をコンパイルするソフトリンクを変更するやっと背景テスト環境には Cent...

MySQL が自動的に再起動する問題の解決方法

序文最近、テスト環境で MySQL データベースが自動的に再起動し続ける問題が発生しました。原因は、...

MySqlはページクエリ機能を実装します

まず、ページ分割クエリを使用する理由を明確にする必要があります。データが膨大なため、すべてのデータを...

テーブルタグ(TAGS)の詳細な紹介

テーブルの基本構文<table>...</table> - テーブルを定義し...

CSS は Alibaba ベクター ライブラリを使用して、対応する位置に見栄えの良いアイコン効果をすばやく追加します (サンプル コード)

Alibaba ベクターアイコンライブラリにアクセスAlibaba ベクターアイコンライブラリ好き...

Antd+vueは円形属性フォームの動的検証のアイデアを実現します

必要な項目をループして検証するために、クエリ フォームのいくつかのプロパティを実装したいと考えていま...

CSS を使用して画像の色を変更する 100 の方法 (収集する価値あり)

序文「画像処理というと、PhotoShop などの画像処理ツールを思い浮かべることが多いです。フロン...

MySQLクライアントとサーバーのプロトコルの解釈

目次MySQL クライアント/サーバー プロトコルMySQL サーバーから高いパフォーマンスを得る必...

MySQL セレクトキャッシュメカニズムの使用に関する詳細な説明

MySQL クエリ キャッシュはデフォルトでオンになっています。ある程度、クエリの効果は向上しますが...

Firebug ツールを使用して iPad でページをデバッグする

iPad でページをデバッグするにはどうすればいいですか? iOS 5 をご利用の場合、iPad の...

MySQL の一般的なツール例の概要 (推奨)

序文この記事では主にMySQLでよく使われるツールに関する関連コンテンツを紹介し、皆さんの参考と学習...

Windows Server 2016 に MySQL 5.7.19 の解凍バージョンをインストールするための詳細なチュートリアル

MySQL 5.7.19 winx64 解凍版のインストールチュートリアルを収録しています。具体的な...

VMware12.0 インストール Ubuntu14.04 LTS チュートリアル

私は、デスクトップ バージョンとサーバー バージョンの両方で、仮想マシンにさまざまなイメージを何度も...

JavaScript Promise の徹底解説

目次1. Promise とは何ですか? 2. なぜ Promise が存在するのでしょうか? 3つ...