【django,docker入門】djangoをdockerのコンテナ上に展開する。公式のチュートリアルを動かす

今回は公式チュートリアル通りにdocker上にdjangoのアプリを展開してみます。
単純に自分用の備忘録です

まず空のディレクトリを作成します。

mkdir test
cd test

次にこのディレクトリの中に以下のような記述があるDockerfileを作成します。

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

Python 3系のイメージを用います。
コンテナの中でcodeディレクトリを作成します。
このcodeディレクトリにrequirements.txtをコピーし、実行します。

そのrequirements.txtは以下のようになります。

Django>=2.0,< 3.0
psycopg2>=2.7,<3.0

ここまでファイルを作成した上で

sudo docker-compose run web django-admin startproject composeexample .

現在はweb imageは存在しないので、現在のディレクトリにファイルを作成してビルドを行います。
現在のディレクトリにファイルを作成するという命令はdocker-compose.ymlのbuild: .に設定してあります。
webイメージがビルドし終えたら、そのコンテナ内でdjango-admin startprojectを実行します。
(ここらへんの理解は甘いです・・・・)

次にdatabaseとアクセスを許可するipアドレスの設定を行います。
settings.pyのDATABASESとALLOWED_HOSTSのところを以下のように修正します。

省略
DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.postgresql',
        'NAME': 'postgres',
        'USER': 'postgres',
        'HOST': 'db',
        'PORT': 5432,
    }
}

ALLOWED_HOSTS = ['*']

省略

最後に以下のコマンドでコンテナを立ち上げます。

docker-compose up

以下のurlにアクセスするとdjangoのページがでてきます。

http://localhost:8000

参考文献

https://docs.docker.com/compose/django/

タイトルとURLをコピーしました