初学者がDocker+Django+gunicorn+nginx+PostgreSQL環境でCSSを配信できるようにしてみた
前回の記事では簡単な日記アプリを作りましたが、CSSが配信されていなかったので、今回はその部分を修正していきます。
つくったもの
cssが適用されたページを表示したいと思います。
コンテナを起動
$ docker-compose up -d
$ docker-compose exec web bash
静的ファイルの置き場所を変更する
$ docker-compose up -d
$ docker-compose exec web bash
settings.pyを開いて、静的ファイルの置き場所を指定します。
# 静的ファイルの配信
STATIC_ROOT = os.path.join(BASE_DIR, 'static/')
collectstaticを行い、静的ファイルを指定した場所に集めます。
$ python manage.py collectstatic
ボリュームがマウントされる
今、webコンテナの中でcollectstaticを実行したので、webコンテナ内にstaticフォルダが作成され、静的ファイルはその中に格納されました。下の図で言うと①です。
実は、docker-compose.ymlにボリュームマウントを記述しておいたので、作成したstaticフォルダはホストにもコピーされます。 上の図の②です。
services:
web:
volumes:
- './web:/code'
そして、staticフォルダはnginxコンテナにもマウントしているので、静的ファイルはnginxコンテナにもコピーされます。上の図の③です。
services:
nginx:
volumes:
- './web/static:/static'
さらにnginxコンテナにはguicornの設定ファイルがあり、静的ファイルの配信先として先ほどコピーされたstaticフォルダが指定されています。
location /static {
alias /static/;
}
以上より、静的ファイルはnginxから配信されるようになります……というのが、私の理解なのですが、どうでしょうか…。間違っていたらご指摘いただけると嬉しいですm(_ _)m
確認する
localhost:80/adminにアクセスすると、今度はcssが適用されたページが表示されると思います。
Author And Source
この問題について(初学者がDocker+Django+gunicorn+nginx+PostgreSQL環境でCSSを配信できるようにしてみた), 我々は、より多くの情報をここで見つけました https://qiita.com/grv2688/items/055126cd10d8f4069f87著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .