転載元
当記事は以下ブログからの転載です。
TECH BACK
はじめに
前回、Windows10 Home環境にDockerのインストールができたので、早速Django環境を作っていこうかと。 Dockerのページに、解説ページがあったので、そちらを参考にすすめていきます。
http://docs.docker.jp/v1.9/compose/django.html
プロジェクトの構成ファイル郡を作りましょう
プロジェクト用のフォルダ作成
コチラは適当に。分かりやすいのを作っとけばOKでしょ。 こんなフォルダでいいかな~ E:\docker\django_env
Dockerfileってのを作りましょう
作ったフォルダの直下に、Dockerfileという拡張子無しのファイルを作成します。 Djangoが動くサーバ(コンテナ)の設定を記載していきます。 そして、開いて編集
FROM python:3.8
ENV PYTHONUNBUFFERED 1
RUN mkdir /code
WORKDIR /code
ADD requirements.txt /code/
RUN pip install -r requirements.txt
ADD . /code/
Documentだと、Python2.7でしたけど、今から作るなら3系ですね。 Python公式だと、https://www.python.org/ 3.8が最新っぽかったので、そちらに変更。 ### requirements.txtを作成
またまた、作ったフォルダに requirements.txt というファイルを作りましょう。 今ファイルには、上記で作ったDjangoが動くコンテナに、使用するライブラリを記載していきます。Django環境を作る際にPipコマンドでインストールするものを、ここに記載しておきます。 内容は
<span class="n">Django
psycopg2</span>
で、保存しておきましょう。まずは、動かすだけなので、コレでOKです。
今度は、docker-compose.ymlってファイルを作成
同じく、作ったフォルダ直下にdocker-compose.yml というファイルを作成 内容は、
db:
image: postgres
web:
build: .
command: python manage.py runserver 0.0.0.0:8000
volumes:
- .:/code
ports:
- 8000:8000
links:
- db
で、保存
ファイルの構成
今までの流れをやっていくと、こんな感じですね。 作ったフォルダの直下に、ファイルを3つ作りました。
Djangoプロジェクト作成
コマンドプロンプトで、先程作ったフォルダに移動します。 > コマンドプロンプトでドライブ移動 ちょっと脱線しちゃいますが、、、 え~どうやるんだっけ~って、なったので一応記載。
> C:\>e:
>
> e:\>
>
移動したら、こんな感じね。
e:\docker\django_env>dir
e:\docker\django_env のディレクトリ
2020/05/24 02:21 <DIR> .
2020/05/24 02:21 <DIR> ..
2020/05/24 02:23 168 docker-compose.yml
2020/05/24 01:48 151 Dockerfile
2020/05/24 02:20 16 requirements.txt
3 個のファイル 335 バイト
2 個のディレクトリ 713,117,704,192 バイトの空き領域
e:\docker\django_env>
そしてフォルダに移動したら、コマンドを実行しましょう。 ちなみに、最後の「composeexample 」という所がプロジェクト名ね。今回は、サンプルのままで。
docker-compose run web django-admin.py startproject composeexample .
各種ダウンロードしますんで、結構時間かかります。。。 そして、実行後にフォルダを覗いて見ると ちゃんと、composeexampleフォルダができてますね。
データベースに接続
composeexampleフォルダの下に、setting.pyがあるので、そいつを編集。 DATABASESの箇所をこんな感じに。
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.postgresql_psycopg2',
'NAME': 'postgres',
'USER': 'postgres',
'HOST': 'db',
'PORT': 5432,
}
}
で、保存
いよいよ、動かす
コマンドを実行
docker-compose up
あら、、エラーが
Starting django_env_db_1 ... done
Creating django_env_web_1 ... error
ERROR: for django_env_web_1 Cannot start service web: Cannot link to a non running container: /django_env_db_1 AS /django_env_web_1/db
ERROR: for web Cannot start service web: Cannot link to a non running container: /django_env_db_1 AS /django_env_web_1/db
ERROR: Encountered errors while bringing up the project.
django_env_db_1 が、動いてませんぜ~ってことですね。 Docker Dashboardを開いて、django_env_db_1 のLogsを見てみると、、 まずDBのInitializeしろと。
docker-compose.yml にパスワードを追記してやります。
db:
image: postgres
<span style="color:"> environment:</span>
<span style="color:"> POSTGRES_PASSWORD: Password</span>
web:
build: .
command: python manage.py runserver 0.0.0.0:8000
volumes:
- .:/code
ports:
- 8000:8000
links:
- db
settings.py にも、パスワードを追加します。
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.postgresql_psycopg2',
'NAME': 'postgres',
'USER': 'postgres',
'HOST': 'db',
'PORT': 5432,
<span style="color:">'PASSWORD': 'Password'</span>
}
}
そして、再度
docker-compose up
http://localhost:8000/ に、アクセスしてみると。。。
感想とか
ん~思ったより早く行ったな。といった感想。 自分でイチから環境作った時は、結構時間掛かった記憶。(もう二度とやりたくないとか、ちょっと思ってるぐらい) これなら、思い立ったら簡単にプロトタイプ作っちゃおうかな~とか思ったりできるよね。
今後
自分のLocal環境にはDocker環境できましたんで、 1. ちょっとしたサンプルアプリをLocalで開発
2. AWSにDocker受け入れ環境を作って、デプロイ!
って感じでやってみますかね。