2
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

ベリサーブAdvent Calendar 2019

Day 25

Djangoで作ったアプリケーションをDockerで動かす

Last updated at Posted at 2019-12-24

Qiitaの他の投稿だと、最初からDocker上に環境を作ってアプリケーション開発始める記事が多そうでした。が、今回ローカルでDjangoで作ったアプリケーションを、後からDockerに載せて公開する、という流れをやったので、手順を残しておきます。

今回の環境

  • Windows10Pro
  • Django 2.2.5
  • Python 3.7.2
  • Docker 19.03.2

前提

  • ローカルのDjangoで動くアプリケーションが手元にある
  • Dockerの環境構築が済んでいる

手順

まずは動かしたいアプリケーションの入ったフォルダを一式用意します。

  • hoge
    • manage.py
    • hoge
      • settings.py
      • urls.py
      • wsgi.py

こんな感じの構成になっているかと思います。(実際には上記に書いていないものも存在するはずです)

requirements.txtの作成

作成したDjangoのアプリケーションを動かすために必要なパッケージを書いていきます。

そもそもrequirements.txtは何かわからない、という場合は以下を参照。

Python, pipでrequirements.txtを使ってパッケージ一括インストール | note.nkmk.me

requirements.txt
django
Pillow
django-cleanup
wsgi-basic-auth
django-pure-pagination

これを、プロジェクトと同じ階層に置きます。

  • hoge
    • manage.py
    • hoge
      • settings.py
      • urls.py
      • wsgi.py
  • requirements.txt

HOSTSの設定

これをやらずに以降の手順を進めると、実際にデプロイしてアクセスした際にエラー画面が出たりします。

  • hoge
    • hoge
      • settings.py <- コレ

settings.pyの中にALLOWER_HOSTSという項目があるので、ここに公開するサイトのドメイン名を記入します。

参考:Django 1.5以降ではALLOWED_HOSTSの設定が必要 – ymyzk’s blog

Dockerfileの作成

FROM python:3
ENV PYTHONUNBUFFERED 1
RUN mkdir /code
WORKDIR /code
COPY requirements.txt /code/
RUN pip install -r requirements.txt
COPY . /code

Docker で Django 開発環境を構築するを参考にしました。

Dockerイメージを作成する

docker build -t my-sample-app .

最後のdotを忘れるとエラーになります(何度もやった)

ビルドしたDockerイメージを実行

docker run --rm -v [アプリケーションのフォルダへのパス]:/code/ -p 8000:8000 [Dockerイメージ名] python ./hoge/manage.py runserver 0.0.0.0:8000

これで、アプリケーションがDockerコンテナ上で動作しているはずです。

2
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?