前回、Windows10 Home環境にDockerのインストールができたので、早速Django環境を作っていこうかと。
Dockerのページに、解説ページがあったので、そちらを参考にすすめていきます。
http://docs.docker.jp/v1.9/compose/django.html
Contents
プロジェクトの構成ファイル郡を作りましょう
プロジェクト用のフォルダ作成
コチラは適当に。分かりやすいのを作っとけば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コマンドでインストールするものを、ここに記載しておきます。
内容は
Django
psycopg2
で、保存しておきましょう。まずは、動かすだけなので、コレで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 environment: POSTGRES_PASSWORD: Password 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,
'PASSWORD': 'Password'
}
}
そして、再度
docker-compose up
ん、、、、今度はうまく行ったみたい。
http://localhost:8000/ に、アクセスしてみると。。。
感想とか
ん~思ったより早く行ったな。といった感想。
自分でイチから環境作った時は、結構時間掛かった記憶。(もう二度とやりたくないとか、ちょっと思ってるぐらい)
これなら、思い立ったら簡単にプロトタイプ作っちゃおうかな~とか思ったりできるよね。
今後
自分のLocal環境にはDocker環境できましたんで、
- ちょっとしたサンプルアプリをLocalで開発
- AWSにDocker受け入れ環境を作って、デプロイ!
って感じでやってみますかね。