DockerコンテナにPythonアプリケーションをデプロイするプロセスの分析

DockerコンテナにPythonアプリケーションをデプロイするプロセスの分析

シンプルなアプリケーションの展開

1. ディレクトリ構造:

└── Pythonpro #ディレクトリ└── test.py #ファイル└── requirements.txt #ファイル└── Dockerfile #ファイル

2. Dockerfileファイルを書く

# 画像に基づいて
Python:3.6.4より
# コードフォルダを作成する 作業ディレクトリ/コード
mkdir /code を実行
#現在のコードファイルをコンテナ/コードにコピーします
コピー ./code
# 必要なパッケージをインストールする
pip install -r /code/requirements.txt -i https://pypi.douban.com/simple を実行します。
# cmd/codeの作業ディレクトリを指定する
WORKDIR /コード
#コンテナの起動時に実行されるコマンド
コマンド ["python","test.py"]

3. コンテナイメージを作成する

docker build -t テスト。

4. コンテナを実行する

docker run -it --name test --restart always --privileged=true python-test
--name: コンテナの名前を python-test として指定します。ここで、test は先ほどビルドしたイメージです。

--restart: always コンテナは終了時に常に再起動されます。

--privileged=true: コンテナ内のファイルを実行するために必要な権限。

Django アプリケーションのコンテナ化

1. ディレクトリ構造。このディレクトリは /home/Pythonpro に存在すると想定します。

└── Pythonpro #ディレクトリ└── manage.py #ファイル└── メインプロジェクト #ディレクトリ└── apps #ディレクトリ└── requirements.txt #ファイル└── Dockerfile #ファイル└── run.sh #ファイル

run.sh スクリプト

python /code/manage.py 実行サーバー 0.0.0.0:8000

2. Dockerfileファイルを書く

Python:3.6.4より
mkdir /code \ を実行します
&&apt-get アップデート \
&&apt-get -y をインストール freetds-dev \
&&apt-get -y unixodbc-dev をインストール
コピー ./code 
pip install -r /code/requirements.txt -i https://pypi.douban.com/simple を実行します。
WORKDIR /コード
CMD ["/bin/bash","run.sh"]

3. イメージを構築する

docker build -t webtest を実行します。

4. コンテナを実行する

docker run -it -p 6500:8000 -v /home/Pythonpro:/code --name web --restart always --privileged=true webtest

-p: コンテナのポート8000​​をホストのポート6500にマップします

-v: ホストディレクトリ /home/Pythonprot はコンテナディレクトリ /code にマップされます

--name: コンテナの名前をweb、webtestでビルドされたイメージとして指定します

--restart: always コンテナは終了時に常に再起動されます

--privileged=true: コンテナ内のファイルの実行に必要な権限

以上がこの記事の全内容です。皆様の勉強のお役に立てれば幸いです。また、123WORDPRESS.COM を応援していただければ幸いです。

以下もご興味があるかもしれません:
  • クエリのためにCassandraコンテナに接続するPythonについて
  • DockerコンテナでPythonを実行するディープラーニング環境を構築する方法
  • Pythonの基本構文コンテナの詳細な説明
  • Python 統計ハッシュ可能オブジェクト コンテナ カウンターの詳細な説明
  • Python コンテナの概要
  • Pythonコンテナ組み込みの一般的な関数操作

<<:  デジタルテーブル特殊効果を実現するネイティブJS

>>:  MySQL MHA のセットアップと切り替えに関するいくつかのエラー ログの概要

推薦する

Amoeba を使用して MySQL データベースの読み取り/書き込み分離を実装する方法の詳細な説明

MySQL には読み取りと書き込みを分離するアーキテクチャが多数あります。Baidu のそれらのほと...

MySQL のインデックスの種類と基本的な使用例

目次索引- 総合索引- ユニークなインデックス- 主キーインデックス- 複合インデックス- 全文索引...

MySQL kill コマンドの使用ガイド

KILL [接続 | クエリ] processlist_id MySQL では、各接続は個別のスレ...

vsCodeはワンクリックでvueテンプレートを生成します

1. ショートカットCtrl + Shift + Pを使用してコンソールを呼び出します 2、「スニペ...

jQuery は拡張アニメーションによるナビゲーション バー効果を実装します

展開アニメーション効果のあるナビゲーションバーを設計してカスタマイズし、デモを作成してみました。設計...

Linux で TCP 接続の最大数をテストする方法

序文TCP サーバの最大同時接続数に関して、「ポート番号の上限が 65535 であるため、TCP サ...

Vue フィルターの実装と適用シナリオの詳細な説明

1. 簡単な紹介Vue.js を使用すると、一般的なテキストの書式設定に使用できる独自のフィルターを...

MySQL 8.0 の新機能の落とし穴と解決策についての簡単な説明 (要約)

1. ユーザーを作成して承認するMySQL 8.0 では、ユーザーの作成と認証が以前とは異なります...

MySQL ログインおよび終了コマンドの形式

mysql ログインのコマンド形式は次のとおりです。 mysql -h [hostip] -u [ユ...

MySQL 8.0.23 メジャーアップデート (新機能)

著者: Guan Changlong は、Aikesheng の配送サービス部門の DBA です。主...

InnoDB がシリアル化分離レベルを実装する方法

シリアル化の実装InnoDB は 2 つの方法でシリアル化を実装します。まず、SELECT 文が明示...

Dockerfile を使用して Node.js サービスをデプロイする方法

Dockerfileを初期化するプロジェクトの名前が express であると仮定して、expres...

HTML 順序なしリスト 箇条書き 画像を使用した CSS の記述

少なくとも 5 冊のベストセラー書籍の順序なしリストを含む HTML ページを作成します。各書籍の前...

Docker で Ubuntu に Python3 と Pip をインストールする際の問題

文章1) Ubuntuイメージをダウンロードする docker プル Ubuntu 2) 画像を見る...

Linux TTY/PTS の違いの概要

キーボードで文字を入力すると、対応するプロセスにどのように送信されるのでしょうか? ps や who...