ソフトウェア開発における最大の問題の1つは、環境構成、オペレーティングシステム設定、さまざまなライブラリおよびコンポーネントのインストールです。それらが正しい場合にのみ、ソフトウェアを実行できます。あるオペレーティングシステムから別のオペレーティングシステムを実行する場合、私たちが採用する通常の戦略は、WindowsシステムでLinuxシステムを実行するなど、仮想マシンを導入することです。この方法には、より多くのリソースを消費し、多くの冗長なステップがあり、開始が遅いという大きな欠点があります。最も人気のあるLinuxコンテナソリューションの1つはDockerです。その最大の利点は、軽量、低リソース使用量、および高速起動です。この記事のDockerとは何ですか? Dockerはどのような問題を解決しますか?メリットは何ですか?実装を包括的な紹介に展開する方法。
このような実際のケースを想像してみてください。Pythonアプリケーションをデプロイする場合は、どうすればよいでしょうか。まず、pythonオペレーティング環境が必要です。たとえば、python3がデプロイされ、python2がマシン上にあります。最初にpython3をインストールしますが、さまざまな依存パッケージもインストールすると、マシンで競合が発生する可能性があります。 pythonをインストールした後、mysqlまたはredisもインストールされていることがわかりました。構成のダウンロードとインストールを続行します。何?サーバーは不要になりました。サーバーに変更する必要がありますか?その後、もう一度やり直してください。何?基本的なアプリケーションは宣伝するにはあまりにも優れており、他のベンダーに展開を促す必要がありますか?何をすべきか? Docker以前のソフトウェア業界の運用と保守には、次のような問題点があったことがわかります。
# 1. ソフトウェアのリリースと展開は非効率的で面倒であり、常に手動による介入が必要です
# 2. 環境の一貫性を確保する
# 3. 異なる環境間の移行のコストは高い
Dockerの展開とインストールを完了する前に、まずDockerの利点を理解しましょう。
# 1. 簡単なソフトウェア構築と簡単な配布
# 2. アプリケーションが分離され、依存関係が解除されます
# 3. CIに完全に使用できます/CD
# 4. 迅速な展開、テスト後に簡単に破棄
# データディレクトリを準備する
mkdir myproject
cd myproject
docker run -di --name=myproject -p 8080:8080-v /home/myproject:/home python:3.6
# サーバーにマウントされたストレージボリュームにプロジェクトをアップロードします
scp django.tar.gz 149.129.38.117:
cp /root/django.tar.gz /home/myproject/
tar xvf django.tar.gz
# 関連する依存関係をインストールするコンテナを入力します
pip install -r requirement.txt
apt-get update
apt-get install vi
# setting.pyを次のように変更します
ALLOWED_HOSTS =['*']
# プロジェクトを実行する(wsgiref)
python manage.py runserver 0.0.0.0:8080
uwsgi run project
pip3 install uwsgi
# プロジェクトのルートパスにuwsgiを作成します.iniファイル、書き込み
[ uwsgi]
# nginxへのソケット接続を構成します
socket=0.0.0.0:8080
# httpを使用することもできます
# http=0.0.0.0:8080
# プロジェクトが配置されているディレクトリであるプロジェクトパスを構成します
chdir=/home/django_test
# wsgiインターフェイスモジュールのファイルパスを構成する
wsgi-file=django_test/wsgi.py
# 開始するプロセスの数を構成します
processes=4
# プロセスごとのスレッド数を構成します
threads=2
# 構成開始管理メインプロセス
master=True
# メインプロセスを格納するプロセス番号ファイルを構成します
pidfile=uwsgi.pid
# ダンプロギングを構成する
daemonize=uwsgi.log
# 開始、停止、再起動、表示
uwsgi --ini uwsgi.ini #起動
lsof -i :8001 #ポート番号によるクエリ
ps aux | grep uwsgi #プログラム名によるクエリ
kill -913844 #キルプロセス
uwsgi --stop uwsgi.pid #uwsgを介してuwsgiを停止します
uwsgi --reload uwsgi.pid #リブート
# nginx転送
mkdir -p nginx/conf nginx/html nginx/logs
# confディレクトリにnginxを作成します.conf
worker_processes 1;
events {
worker_connections 1024;}
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
server {
listen 80;
server_name localhost;
location /{
# uwsgi_pass 149.129.38.117:8080;
proxy_pass http://149.129.38.117:8080;}
error_page 500502503504/50x.html;
location =/50x.html {
root html;}}}
docker run --name nginx -id -p 80:80-v /home/nginx/conf/nginx.conf:/etc/nginx/nginx.conf -v /home/nginx/html:/etc/nginx/html -v /home/nginx/logs:/var/log/nginx nginx
# pythonのdockerでuwsgiを使用してプロジェクトを実行します
# 外部アクセス:http://149.129.38.117/