Docker+nginx+djangoをGitで分割しながら実装
想定読者
Dockerfileの位置からdocker-compose.ymlのbuild設定が書ける。
docker-compose.ymlでDjangoのwsgi起動のディレクトリを指定できる。
説明する構成
同じリポジトリで扱うのは次の組み合わせ
docker composeとnginx
この2つは変わらない、もしくは同時に変わることが多いから。
django
この記事は何のために?
docker上でdjangoの開発もする記事がほとんどですが、DjangoはDjangoで開発し、リポジトリを分けたいことが多いと思います。以前はコンテナ内にgitを入れる方法を「既存のDjangoプロジェクトを使ってDjango+Nginx+MySQL環境をDockerで構築する」で解説しました。
しかし、容量は少しでも削減したいクラウドインフラにおいて、Gitというかなり大きいソフトをコンテナ内に入れるのは避けたいところです。
そこで、docker部分とウェブアプリ部分を分離する方法は必要、かつ需要があると思い、提供することにしました。
段取り
開発する部分とDocker部分を分ける際は、やや順番が必要です。なぜならDockerが読み込むのは、完成されたコンテナだからです。
以下のファイル構成を考えます。
Docker周りのリポジトリ(初期)
docker file
|-nginx
|-
|-django
|-Dockerfile
|-requirements.txt
|-docker-compose.yml
requirements.txtは次のDjangoの環境のrequirements.txtにしましょう。
Django周りのリポジトリ
django_dir
|-.git
|-.gitignore
|-project_name
|-app1_name
Docker周りのリポジトリを最初に本番へcloneします。
次に、djangoディレクトリ内でDjango周りのリポジトリをcloneします。
docker compose でDockerコンテナのbuildと起動をしましょう。
感想
当然こっちのほうが楽ですね。