Dockerは、Jjangoアプリを作成します


以前の投稿では、私が説明した
我々は、我々が以前に出発したピックアップをします.あなたがDockerに全く新しいならば、私は最初にチェックすることを勧めます.
我々がこのポストのために使っているスターターコードは、そうですavailable in GitHub あなたが沿って続くことを望むならば.
ファイル構造がどのように見えるかを見てみましょう.
├── Dockerfile
├── manage.py
├── README.md
├── requirements.txt
└── main
    ├── asgi.py
    ├── __init__.py
    ├── settings.py
    ├── urls.py
    └── wsgi.py
あなたが前のポストから続いているならば、あなたは私がToDoからメインまで『主な』プロジェクトフォルダに名前を変えたのに気がつきます.これは将来のプロジェクトのためのスタートアップテンプレートとして使用するためにこのチュートリアルシリーズをスケールしたいからです.それで、私は彼らがそうすることができるのと同じくらい一般的にフォルダの名前を保つことが重要であると感じました.
フォルダ構造は、彼らが理解するのが難しくないので、あまりに混乱しているようではありません.
行きましょう.まず、プロジェクトのルートディレクトリを作成しますapp 既存のすべてのコンテンツをapp フォルダーの構造になります.
.
├── app
│   ├── Dockerfile
│   ├── entrypoint.sh
│   ├── main
│   │   ├── asgi.py
│   │   ├── __init__.py
│   │   ├── settings.py
│   │   ├── urls.py
│   │   └── wsgi.py
│   ├── manage.py
│   └── requirements.txt
└── README.md

3 directories, 12 files
これはなぜですか.それは、我々が取り入れているからですdocker-compose その性質によって、プロジェクトの複数のツールを管理することができます.django 彼らの1人であること.これらのツールとその設定は、それぞれのディレクトリにクリアコードと読みやすさのために行く必要があります.
さあ、Aを作ろうdocker-compose.yml ファイルがルートディレクトリに存在します.app ディレクトリと次のコード行を書き込みます.
version: "3.8"

services:
  app:
    build:
      context: ./app
      dockerfile: Dockerfile
    command: python manage.py runserver 0.0.0.0:8000
    volumes:
      - ./app:/app
    ports:
      - "8000:8000"
    env_file:
      - ./app/.env
    environment:
      - DEBUG=1
コードを通して行きましょう
1 .
version: "3.8"
私たちはdocker-compose バージョン3.8 .どのように、このバージョン管理は重要ですか?これは、このポストの複雑なトピックですが、もっと知りたい場合は、チェックすることができますofficial docker website .
2 .
services:
リストを作成したいtools ' 前述のようにサービス内の配列項目として.
3 .
  app:
それぞれの'tools ' 認識として自分の名前が必要です.app は、django コンテナ.あなたの代わりに何かを置くことができますapp ライクdjango , server あるいはlabrador .
4 .
    build:
      context: ./app
      dockerfile: Dockerfile
ご存知のように、各tool ' or container Docker言語では、実行する前にビルドする必要があります.私たちは以前のポストでも学んだ.docker-compose コンテナを構築するためにどのフォルダーを探すかを知る必要がありますapp . したがって、当然、我々はすべてのファイルに関連するapp コンテナへapp フォルダとコンテキスト名を./app , と同じapp フォルダからdocker-compose.yml ファイルがあります.
同時に、それはまたDockerfile ロケーション.したがって、名前と場所は、context . 我々は、複数のDockerfile 後のsは、それで、それを覚えやすい場所で彼らを持つのが便利です
5 .
    command: python manage.py runserver 0.0.0.0:8000
あなたがわかるならばDjango , これはただの基準だrun あとでサーバを起動するときにしたいコマンド.
6 .
    volumes:
      - ./app:/app
The volumes マッピングは、コンテナ内のフォルダにローカルフォルダをマップすることができます.あなたが調べるならばDockerfile , フォルダ名を作成しましたapp . コンテナとローカルシステム内のフォルダーは、このコマンドに同期したままです.また、ローカルシステムで何かを変更するたびにサーバのホットリロードをトリガします.また、すべてのコード変更でサーバーを再起動する必要があります.
7.
    ports:
      - "8000:8000"
前の記事と同じように、我々はローカルポート8000をコンテナのポート8000にマップしてサーバーにアクセスしたい.
これにより、7行目を削除することができます.EXPOSE 8000 および8 .CMD ["python", "manage.py", "runserver", "0.0.0.0:8000"] 以来、両方の現在管理されてdocker-compose ここで.
8 .
    env_file:
      - ./app/.env
    environment:
      - DEBUG=1
両方env_file and environment 環境変数をコンテナに設定するために使用できます.environment 変数がpublicであるとき、sは好まれますenv_file sgit-ignored , などのプライベート環境変数を設定するために使用することができますsecret-keys , tokens さらにpasswords . 後で使用する方法を調べます.
今のところ、端末に行ってヒット
docker-compose build
万事うまくいったら、今見てもいいSuccessfully built 端末で.
だから、実行してサーバーを起動することがあります
docker-compose up
私たちは今、この美しい画面で提示する必要がありますlocalhost:8000 我々のブラウザで.

それは我々の実行にかかるすべてだdjango プロジェクトdocker-compose . それは得ることができるように簡単です.
すべてのコードはGitHub
次に、我々は追加されますpostgres データベースとnginx セットアップにプロキシを逆にし、どのようにDockerを構成するシステムをスケーリングすることができますをご覧ください.