前書き
この記事では、django + uwsgi + nginxデプロイメントを介したDockerでのDjangoプロジェクトのデプロイメントを紹介します。
学習プロセスを記録するため、現在の上位バージョンが使用されます。
Pythonのバージョンは3.8.3です
djangoのバージョンは3.0.6です
nginxのバージョンは1.17.10です
簡単な紹介の後、トピックに移ります。
プロジェクト、Dockerfile、その他のファイルを保存するための作業ディレクトリを作成します。
mkdir uwsgidocker
各ファイルについて簡単に説明する
docker-compose.yml:Docker Composeは、複数のコンテナで構成されるアプリケーションを定義および実行するためにdockerが提供するコマンドラインツールです。
作成を使用すると、YAMLファイルを使用してアプリケーションの各サービスを宣言的に定義し、1つのコマンドでアプリケーションを作成して開始できます。
最初はドッカーを使いませんでした-compose.yml
Dockerfile:ミラーを構築するために使用されるテキストファイルです。テキストコンテンツには、ミラーを構築するための手順と手順が含まれています。
my_django:新しく作成されたdjangoプロジェクトであり、主に許可されています_HOSTS =[]許可に変更_HOSTS =["*"]
nginxconf:これは、nginxイメージを作成するためのnginx構成とDockerfileファイルを含むフォルダーです。
pip.conf:これは、主にダウンロードを高速化するためのpipに使用されるpip構成に関するものです。
uwsgi_conf.ini:uwsgi構成ファイル
注:djangoプロジェクトのsettings.pyファイルで、ALLOWED_HOSTS = []をALLOWED_HOSTS = [” *”]に変更する必要があります。
Dockerfileに基づいてuwsgiのミラーイメージを作成し、実行します。
FROM python:3.8.3
# ディレクトリを作成する
RUN mkdir -p /usr/src/app
# 作業ディレクトリを設定する
WORKDIR /usr/src/app
# ピップ.confファイルをにコピーします/root/.pip/pip.conf
COPY pip.conf /root/.pip/pip.conf
# ピップを更新
RUN pip install --upgrade pip
# 一般的なプロジェクトでdjangoとuwsgiをダウンロードするには、要件をダウンロードするだけで済みます.txt
RUN pip install django && pip install uwsgi
# 現在のディレクトリ内のすべてのファイルをコピーし、プロジェクト、uwsgi構成ファイルのみをコピーします
COPY ./usr/src/app/
# 実行時にuwsgiを開始します
CMD uwsgi --ini uwsgi_conf.ini
# 露出ポート
EXPOSE 80808080008888
uwsgi構成ファイル、公式ウェブサイト
[ uwsgi]
# プロジェクトディレクトリは現在のディレクトリにあるので、直接書き込むだけです
chdir = my_django
# uwsgiスタートアップファイル、プロジェクトの下のwsgi.py
module = my_django.wsgi
# メインスレッドが存在することを許可します(true)
master =true
# プロセス数
processes =1
# プロジェクトの実行ポートを指定するために使用され、ソケットとhttpを使用できます。見やすいようにhttpを使用します。
http =0.0.0.0:8000
# socket =0.0.0.0:8000
# http =10.0.0.10:8000
# socket =10.0.0.10:8008
# socket =/usr/src/app/my_django/uwsgi.sock
# サーバーの終了時に環境を自動的にクリーンアップし、unixソケットファイルとpidファイルを削除します
vacuum =true
さて、2つのファイルで、uwsgiミラーを作成できます。次のコマンドを実行して、ミラーイメージを生成します。
docker build -t myuwsgi ./
dockerimages
を使用して画像を表示します
uwsgiミラーを実行します
画像が作成されたので、次のステップは画像を実行してブラウザで表示することです。
次のコマンドを直接使用して、見やすいようにポートを公開します。
docker run --rm -it --name webuwsgi -p 8000:8000 myuwsgi
運用結果
次に、ブラウザでアクセスし、IPとポートを入力して192.168.56.102:8000にアクセスできます。
これは、uwsgiイメージが完成し、正常に実行できることを示しています。
次のステップは、リバースプロキシ用のnginxミラーを作成することです
最初にnginxconfディレクトリ、簡単な操作のために cd nginxconf /
を入力してから、Dockerfileを編集します
FROM nginx
# デフォルトのnginx構成ファイルを削除します
RUN rm -rf /etc/nginx/conf.d/default.conf
# 現在のディレクトリにある構成ファイルをにコピーします/etc/nginx/conf.d/内容の下
COPY nginx.conf /etc/nginx/conf.d/nginx.conf
EXPOSE 80
nginx.confファイルを編集します
server {
# リスニングポート
listen 80;
# CPU名
server_name localhost;
location /{
include uwsgi_params;
# uwsgiサービスのIPとポート、
proxy_pass 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 $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;}
location /static{
# 静的ファイル
alias /usr/share/nginx/html/static;}}
uwsgiコンテナのIPは、 dockerinspect
コンテナ名を使用できます
docker inspect webuwsgi
見る
さて、次のステップはnginxミラーを作成することです、ミラーを作成するには次のコマンドを使用します
docker build -t mynginx ./
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.ymlファイルを編集し、ipを割り当て、nginxおよびuwsgi構成ファイルにわずかな変更を加えます。
docker-compose.ymlファイル
version:'3'
services:
version:'3'
services:
uwsgi:
build:
context:./
image: uwsgi
restart: always
networks:
django:
ipv4_address:10.0.0.10
ports:-"8000:8000"
volumes:-/root/uwsgidocker/:/usr/src/app/:rw
command: uwsgi --ini /usr/src/app/uwsgi_conf.ini
nginx:
image: myweb
build:
context:./nginxconf
ports:-"80:80"-"8080:8080"
volumes:-/root/uwsgidocker/nginxconf/nginx.conf:/etc/nginx/conf.d/nginx.conf:rw
restart: always
privileged:true
networks:
django:
ipv4_address:10.0.0.20
networks:
django:
ipam:
config:- subnet:10.0.0.0/24
uwsgi_conf.ini
ファイル、IPを変更するだけ
[ uwsgi]
chdir = my_django
module = my_django.wsgi
uid = root
gid = root
master =true
processes =1
# http =0.0.0.0:8000
# socket =0.0.0.0:8000
# http =10.0.0.10:8000
socket =10.0.0.10:8008
# socket =/usr/src/app/my_django/uwsgi.sock
vacuum =true
nginx.confファイルも同様に、ipを変更します
server {
listen 80;
server_name localhost;
location /{
include uwsgi_params;
# proxy_pass http://192.167.0.2:8000;
# uwsgi_pass 192.167.0.2:8000;
# proxy_set_header Host $host;
# proxy_redirect off;
# 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 $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;}
location /static{
alias /usr/share/nginx/html/static;}}
構成を少し変更した後、直接実行できます
docker-構成またはドッキング-compose up -dバックグラウンドで実行
docker-compose stop #コンテナを停止します
docker-compose down
docker-compose
を使うのが特に便利だと思いましたか?これも使うことをお勧めします!
総括する
これまで、Dockerを使用してDjangoプロジェクトをデプロイするcentos8の詳細なチュートリアルに関するこの記事を紹介しました。関連するdockerデプロイメントdjangoプロジェクトのコンテンツについては、ZaLou.Cnの以前の記事を検索するか、以下の関連記事を引き続き参照してください。 ZaLou.Cn!
Recommended Posts