はじめに
Webアプリケーションのシステムを構築する場合、Webアプリケーション本体とそれに必要なデータベースなどを連携させることが一般的である。規模が小さければ、Dockerコンテナの連携・管理を手動でしてもよいが、連携するアプリケーションが増えてくると、非常に手間がかかってしまう。
そのため、1つのYMLファイルに複数のコンテナを定義し、Dockerコンテナを一括で構築・連携・管理する。これを可能にするツールが、Docker Composeである。以下では、DockerでDPostgreSQLと連携させたDjangoの環境をつくる流れを確認する。
Docker Composeの流れ
1 Docker Composeをインストールする。
2 Dockerfile
を記述する。
Dockerコンテナの構成内容をまとめて記述するシンプルなテキスト形式のファイル。
FROM python:2.7
ENV PYTHONUNBUFFERED 1
RUN mkdir /code
WORKDIR /code
ADD requirements.txt /code/
RUN pip install -r requirements.txt
ADD . /code/
3 requirements.txt
を記述する。
アプリケーションに必要なPythonの環境を記述するテキストファイル。
Django
psycopg2
4 docker-compose.yml
を記述する。
連携させるアプリケーションのためのファイル。構造化されたデータの表現方法。
version: '2'
services:
db:
image: postgres
web:
build: .
command: python manage.py runserver 0.0.0.0:8000
volumes:
- .:/code
ports:
- "8000:8000"
depends_on:
- db
5 docker-compose
コマンドを用いてDjangoプロジェクトを作成する。
$ docker-compose run web django-admin.py startproject composeexample .
6 プロジェクト内のsettings.py
を編集する。
DATABASES = {
#追加
'default': {
'ENGINE': 'django.db.backends.postgresql_psycopg2',
'NAME': 'postgres',
'USER': 'postgres',
'HOST': 'db',
'PORT': 5432,
}
}
7 docker-compose up
コマンドを実行する。
$ docker-compose up