導入 この記事では、django + uwsgi + nginx デプロイメントを使用して、Docker に Django プロジェクトをデプロイする方法を紹介します。 記録されるのは学習過程なので、現在の上位バージョンが使用されます。
さて、簡単な紹介の後、本題に入りましょう。 作業ディレクトリを作成する
各ファイルについて簡単に説明する 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 設定ファイル
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 イメージを作成できます。次のコマンドを実行してイメージを生成します。
uwsgiイメージを実行する 画像が作成されたので、次のステップでは画像を実行してブラウザで表示します。 次のコマンドを直接使用して、ポートを公開し、簡単に表示できるようにします。 docker run --rm -it --name webuwsgi -p 8000:8000 myuwsgi 運用結果 次に、ブラウザでアクセスし、IPとポートを入力して192.168.56.102:8000にアクセスします。 これは、uwsgi イメージが作成され、正常に実行できることが証明されます。 次のステップは、リバースプロキシ用のnginxイメージを作成することです。 Nginx イメージの作成 まずnginxconfディレクトリに入り、操作を簡単にするために 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は
チェック さて、次のステップは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 プロジェクトをデプロイする方法です。 次に、 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] 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 を使用して Centos8 に Django プロジェクトをデプロイする方法に関する詳細なチュートリアルに関するこの記事は終了です。Docker に Django プロジェクトをデプロイする方法の詳細については、123WORDPRESS.COM の以前の記事を検索するか、次の関連記事を引き続き参照してください。今後も 123WORDPRESS.COM を応援してください。 以下もご興味があるかもしれません:
|
<<: JavaScript で円形のプログレスバー効果を実装する
>>: jsはクリックしてカードを切り替える機能を実現します
質問1:インストール中に net start mysql と入力すると、次のエラー メッセージが表示...
目次背景glibc 2.14をコンパイルするソフトリンクを変更するやっと背景テスト環境には Cent...
序文最近、テスト環境で MySQL データベースが自動的に再起動し続ける問題が発生しました。原因は、...
まず、ページ分割クエリを使用する理由を明確にする必要があります。データが膨大なため、すべてのデータを...
テーブルの基本構文<table>...</table> - テーブルを定義し...
Alibaba ベクターアイコンライブラリにアクセスAlibaba ベクターアイコンライブラリ好き...
必要な項目をループして検証するために、クエリ フォームのいくつかのプロパティを実装したいと考えていま...
序文「画像処理というと、PhotoShop などの画像処理ツールを思い浮かべることが多いです。フロン...
目次MySQL クライアント/サーバー プロトコルMySQL サーバーから高いパフォーマンスを得る必...
MySQL クエリ キャッシュはデフォルトでオンになっています。ある程度、クエリの効果は向上しますが...
iPad でページをデバッグするにはどうすればいいですか? iOS 5 をご利用の場合、iPad の...
序文この記事では主にMySQLでよく使われるツールに関する関連コンテンツを紹介し、皆さんの参考と学習...
MySQL 5.7.19 winx64 解凍版のインストールチュートリアルを収録しています。具体的な...
私は、デスクトップ バージョンとサーバー バージョンの両方で、仮想マシンにさまざまなイメージを何度も...
目次1. Promise とは何ですか? 2. なぜ Promise が存在するのでしょうか? 3つ...