Docker 学習https://www.cnblogs.com/poloyy/p/15257059.html プロジェクト構造。 ├── アプリ │ ├── __init__.py │ └── main.py ├── Dockerファイル └── 要件.txt FastAPI アプリケーションの main.py コード 入力からインポート オプション fastapiからFastAPIをインポートする アプリ = FastAPI() @app.get("/") read_root() を定義します: {"Hello": "World"} を返します @app.get("/items/{item_id}") def read_item(item_id: int, q: Optional[str] = None): {"item_id": item_id, "q": q} を返します Dockerファイル # 1. 公式PythonベースイメージFROM python:3.9から起動します # 2. 現在の作業ディレクトリを/codeに設定する # requirements.txt ファイルとアプリケーション ディレクトリ WORKDIR /code を配置する場所です。 # 3. まず requirements.txt ファイルをコピーします。# このファイルは頻繁に変更されないため、Docker はこれを検出してこのステップでキャッシュを使用し、次のステップでもキャッシュを有効にします。COPY ./requirements.txt /code/requirements.txt # 4. pip コマンドを実行して依存関係をインストールします。RUN pip install --no-cache-dir --upgrade -r /code/requirements.txt # 5. FastAPIプロジェクトコードをコピーします。COPY ./app /code/app # 6. サービス CMD ["uvicorn", "app.main:app", "--host", "0.0.0.0", "--port", "80"] を実行します。 ステップ4: pipコマンド分析を実行する
Docker キャッシュここで重要なトリックがDockerfileにあります。まず、FastAPIアプリケーションコードではなく、依存関係のファイルのみをコピーします。 ./要件.txt /コード/要件.txt
DockerイメージのビルドDockerfileでコマンドラインを開く
ミラーを見る
Dockerコンテナを起動する
コンテナを表示
127.0.0.1/にアクセス 127.0.0.1/docs にアクセスしてください Gunicorn を使用した公式 Docker イメージ - Uvicorn
公式栗 tiangolo/uvicorn-gunicorn-fastapi:python3.9 から コピー ./requirements.txt /app/requirements.txt pip install --no-cache-dir --upgrade -r /app/requirements.txt を実行します。 コピー ./app /app アプリケーションシナリオ
詩のDockerイメージを使用する # ステージ 1: Poetry をインストールし、Poetry の pyproject.toml ファイルからプロジェクトの依存関係を含む requirements.txt を生成するためにのみ使用されます。 tiangolo/uvicorn-gunicorn:python3.9 から requirements-stage として # /tmp を現在の作業ディレクトリとして設定します。ここで requirements.txt ファイルが生成されます。WORKDIR /tmp # 詩をインストールする pip install poetry を実行します。 # ./pyproject.toml ./poetry.lock* /tmp/ をコピーします # requirements.txt を生成する poetry export -f requirements.txt --output requirements.txt --without-hashes を実行します。 # これは最終段階です。これ以降の内容は最終的なコンテナイメージに残ります。 FROM python:3.9 # 現在の作業ディレクトリを /code に設定する WORKDIR /コード # requirements.txt をコピーします。このファイルは前の Docker ステージにのみ存在するため、--from-requirements-stage を使用してコピーします。COPY --from=requirements-stage /tmp/requirements.txt /code/requirements.txt # コマンド RUN pip install --no-cache-dir --upgrade -r /code/requirements.txt を実行します。 # コピー ./app /code/app # サービス CMD を実行 ["uvicorn", "app.1_Quick Start:app", "--host", "0.0.0.0", "--port", "80"]
詩の詳細なチュートリアル https://www.jb51.net/article/195070.htm Docker にデプロイされた FastAPI に関するこの記事はこれで終わりです。Docker にデプロイされた FastAPI に関するその他の関連コンテンツについては、123WORDPRESS.COM の過去の記事を検索するか、以下の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。 以下もご興味があるかもしれません:
|
<<: IE 環境での css-vars-ponyfill の使用に関する詳細な説明 (nextjs ビルド)
>>: HTML ではスペースはどのように表現されますか (どのような意味ですか)?
Linux で if を使用してディレクトリが存在するかどうかを判断する方法方法は次のとおりです。...
目次1. 索引1.1 コンセプト1.2 機能1.3 索引作成の原則1.3.1 ディスクアクセス回数を...
トイ・ストーリー3 オンラインマーケティングウェブサイトゼンモバイル鉄から鉄へスプラウトファンドバー...
目次折りたたむ(減らす) for...of の使用whileループの使用折り畳み実装に近い展開する配...
目次使用インストールルーティングでどのように使用しますか?読み込み速度の比較最近、中間およびバックエ...
現在の要件は、ファイルのアップロード ボタンがあることです。ボタンをクリックすると、アップロードする...
この記事では、ログインジャンプを実装するためのVueの具体的なコードを例として紹介します。具体的な内...
1. 入力・貼り付けできるのは中国語のみ<input onkeyup="value=...
目次動作原理:ブラウザは何をするのですか?ホストファイル index.htmlメイン.jsその他のベ...
1. インデックスはnull値を保存しないより正確に言うと、単一列インデックスには null 値は格...
1. MySQLのデフォルトストレージエンジンの変更MySQL 5.1 より前のバージョンでは、デフ...
エフェクト表示組み込みのブートインターフェースがあまりにも醜いので、テーマをダウンロードして美しくし...
問題の説明:最近、rsyncで毎回同期するデータ量が多いが、データベースのbakファイルを保持する必...
複雑なテーブル構造では、一部のセルが垂直方向に複数のセルにまたがるため、列間属性 COLSPAN を...
目次1. はじめに2. フィルター() 3. マップ() 4. ソート() 5. 減らす() 6. ...