web-dev-qa-db-ja.com

Django&VueJS用に設定されたDockerコンテナ

こんにちは、

自分の努力をどこに集中すべきかについてのガイダンスを探しています。私はこれらのウサギの穴を降り続け、探している道が見つからないようです。

私はいくつかの小さな内部Djangoアプリを開発しましたが、より動的なフロントエンドのためにVueJSをミックスに統合したいと考えています。

私の目標は:

  • バックエンドの呼び出しにDjango-restframeworkを使用したい
  • フロントエンドにVueJSを使用し、REST AP​​Iをコールバックしたい。
  • これらすべてを、Jenkinsを使用して同期できるDockerコンテナに配置します。

私の質問/懸念:

  • 私はVueJSとDjangoの両方の単一のDockerコンテナーを構築しようとしていますが、NodeまたはPythonのいずれかで開始すると、依存関係の地獄に陥るようです。誰かが良い参照リンクを持っていますか?
  • 完全に切り離したいのか、一部のDjangoテンプレートを保持するのかを決めることができません。後者の理由は、組み込みのDjango認証を失いたくないためです。私は認証部分全体を書くほど熟練していないので、すでに行われていることを失うことはありません。
  • 完全に分離されており、Djangoが厳密にAPIである場合、Django用の単一のdockerコンテナーと、フロントエンド用の2番目のdockerコンテナーを使用することもできます。考え?
  • 最後に、これらのwebappはすべて同じリスクレベルであり、別個のpostgresデータベースサーバーを備えた同じweb appサーバーに存在します。 nginxはサーバー上にある必要がありますか?次に、djangoを使用したdockerコンテナー内のgunicornを使用しますか?ほとんどの開発者は、サーバーのネイティブなものと、Dockerコンテナーから提供されているものにどこで線を引きますか?これらはすべて、特定の目的を対象としたかなり少量のアプリです。

私が新しい領域に挑戦し続けるので、あなたのすべての指導に感謝します。

ケビン

私はDjango/Vueを使用してきましたが、これは私が行うことです:

  • Djangoプロジェクトを作成します
  • プロジェクトのフォルダーを新しいとして初期化しますVueプロジェクト

ここから2つの開発サーバーを起動できます。1つはDjango用で、もう1つはVue用です。

python manage.py runserver

別のターミナルで:

npm run serve

Vue thisで私のAPIを使用するために、この構成をvue.config.jsで使用します:

module.exports = {
  baseUrl: process.env.NODE_ENV === 'production'
    ? '/static/'
    : '/',
  outputDir: '<PROJECT_BASE_DIR>/static',
  indexPath: '../templates/index.html',
  filenameHashing: false,
  devServer: {
    proxy: {
      '/api': {
        target: 'http://localhost:8000'
      }
    }
  },
}

devServerはリクエストをAPIにリダイレクトし、outputDirおよびindexPathはアプリをプロジェクトのフォルダーにビルドするのに役立ちます<PROJECT_BASE_DIR>/templates/および<PROJECT_BASE_DIR>/static/

次に、TemplateViewを作成し、template_nameindex.html(Vueによって作成されたファイル)に設定します。これにより、Djangoビュー/テンプレート。

このアプローチでは、DjangoのDockerコンテナーを使用できます。

これにより、継続するための基本的なガイダンスが得られると思います。

アレハンドロ

1

私はDjango + Vueプロジェクトをセットアップする方法を示すプロジェクトに取り組んでいます。これはverbose-equals-true(- https://verbose-equals-true.tk )。このプロジェクトのソースコードは、こちらから入手できます: https://gitlab.com/briancaffey/verbose-equals-true

ここに、私が生産のためにプロジェクトをどのように構成しているかの概要があります。このプロジェクトでは、Docker Composeを使用して、本番用と開発用のさまざまなコンテナーを調整します。

enter image description here

Django/Vue/dockerの使用方法について質問がある場合はお知らせください。 https://verbose-equals-true.tk/docs に詳細な説明があるドキュメントがあります。

ここにあなたの質問/懸念に関するいくつかの考えがあります:

  • Vueアプリをドッキングする方法についてのVueJSからの公式の推奨事項、およびpostgres + Djangoアプリをドッキングする方法についてのDockerからの公式の例から始めました。おそらくすべてを同じコンテナーに入れることができますが、モジュール化して明確にする方法として、物事を分離することが好きです。

  • 私はdjangorestframework_jwtパッケージでの認証にJWTを使用しています。組み込みのDjango認証システムとDjango adminを使用することもできます。

  • 別々のコンテナを持つことは理にかなっていると思います。開発では、Vueアプリを実行しているnpm run serveを実行しているノードコンテナーからアプリを提供できます。本番環境では、nginxコンテナーから本番アプリの静的ファイルを提供できます(これにはマルチステージビルドを使用できます)部)。

  • 私はすべてをコンテナーに保持し、Dockerエンジン以外のサーバーには何もありません。これにより、セットアップが簡略化され、アプリケーションを展開する場所に移植できるようになります。別々にしておくのが理にかなっているのは、postgresデータベースだけです。多くの場合、AWS RDSなどのマネージドデータベースサービスに接続する方がはるかに簡単ですが、Dockerホストマシンでpostgresコンテナを実行して、物事をさらにシンプルにすることもできます。これは、自分でバックアップを行う必要があるため、Dockerボリュームに精通している必要があります。

0
briancaffey