Django イメージをレジストリにプッシュする
このチュートリアルでは、ローカルで構築した Python Django アプリのコンテナーイメージを取得し、Azure Container Registry (ACR) または Docker Hub にデプロイします。
コンテナーレジストリを作成する
イメージのプッシュ先となるコンテナーレジストリを作成します。レジストリの認証と操作方法の詳細については、「コンテナーレジストリの使用」を参照してください。
作成したレジストリエンドポイントが VS Code のDocker Explorer の [レジストリ] に表示されていることを確認してください。
Django アプリの設定
-
Django プロジェクトの
settings.py
ファイルで、アプリのデプロイ先となるルート URL を含めるようにALLOWED_HOSTS
リストを変更します。たとえば、次のコードは "vsdocs-django-sample-container" という名前の Azure App Service (azurewebsites.net) へのデプロイを想定しています。ALLOWED_HOSTS = [ # Example host name only; customize to your specific host "vsdocs-django-sample-container.azurewebsites.net" ]
このエントリがないと、デプロイ後に「DisallowedHost」メッセージが表示され、Web サイトのドメインを
ALLOWED_HOSTS
に追加するように指示されます。これを行うには、イメージを再構築、プッシュ、および再デプロイする必要があります。 -
コマンドパレット (⇧⌘P (Windows、Linux Ctrl+Shift+P)) で、[Docker: イメージのビルド] を選択して、新しい設定でイメージを再構築します。
ヒント: 複数のホスティングサービスで運用環境のイメージをテストする場合は、ALLOWED_HOSTS に
"*"
を入力するだけで済みます。
イメージをレジストリにプッシュする
ALLOWED_HOSTS
が宣言されたら、次のステップは Django イメージをコンテナーレジストリにプッシュすることです。
-
コマンドパレット (⇧⌘P (Windows、Linux Ctrl+Shift+P)) を開き、[Docker: プッシュ] を選択します。
-
レジストリにプッシュするために、先ほどビルドしたイメージを選択します。
-
プッシュ先のレジストリを選択します。これは、イメージに正しいタグを付けるのに役立ちます。
-
レジストリと完全なタグを選択すると、イメージがプッシュされます。アップロードの進行状況は、[ターミナル] ウィンドウに表示されます。
-
完了したら、Docker Explorer で [レジストリ] > [Azure] (または [DockerHub]) ノードを展開し、レジストリとイメージ名を展開して、正確なイメージを表示します。(Docker Explorer の更新が必要な場合があります。)
ヒント: イメージを最初にプッシュするときは、VS Code がイメージを構成する各レイヤーをアップロードすることがわかります。ただし、後続のプッシュ操作では、変更された最初のレイヤーから始まるレイヤーのみが更新されます。通常、アプリコードは最も頻繁に変更されるため、通常、Dockerfile の最後の行でアプリコードがコピーされるのはこのためです。この内側のループの動作を確認するには、コードに小さな変更を加え、イメージを再構築し、再度レジストリにプッシュします。
イメージをレジストリにプッシュしたので、コンテナー対応のクラウドサービスにデプロイする準備ができました。Azure App Service へのデプロイの詳細については、「コンテナーをデプロイする」を参照してください。