LoginSignup
3
3

More than 3 years have passed since last update.

docker-compose upを用いてDockerコンテナ上でDjangoを起動する

Last updated at Posted at 2020-01-25

はじめに

docker-composeを用いてDockerコンテナ上でDjangoを起動させます。Macを使用します。

docker-composeを使う理由

Docknizeされたアプリケーションでは、データベースやミドルウェアのコンテナを分け、複数のコンテナでアプリケーションを構成することがあります。
それぞれのコンテナでDocker runを実行するのは面倒です。その際、docker-composeを用いると複数のコンテナを一つのコマンドで制御することが可能となります。
docker-composeはコンテナの振る舞いをdocker-compose.ymlに記載し制御します。

機能毎にコンテナを分ける構成はAWSのチュートリアルでも紹介されておりマイクロサービスと呼ばれています。
マイクロサービスを意識した構成の利点としてはアプリケーションの開発やテストが機能ごとの小さな単位で実施できる事です。
また、各コンテナを疎結合として設計すると機能毎に独立した開発ができるため、他チームの作業を意識することなく開発、デプロイ、スケールさせることが可能です。
私の経験したスタートアップの開発でも、マイクロサービスを意識した設計をしたことで、並行した開発や小さな機能単位での検証や、テストができ便利でした。

本記事はDjangoアプリをDocker上に構築しAWS Fargateにデプロイするプロジェクトの一部です。

Dcokerfileの作成

下準備として、Pipenvを用いて仮想環境にDjangoをインストールしてください。
詳細手順については別に記事を書いているのでリンクを参照してください。
https://qiita.com/keita_gawahara/items/487a635d226fb0705b13

プロジェクトのルートフォルダにDockerfileを作成します。

$ touch Dockerfile

Dockerfileに以下の内容を追記します。

FROM python:3.7-slim

ENV PYTHONDONTWRITEBYTECODE 1
ENV PYTHONUNBUFFERED 1

WORKDIR /

COPY Pipfile Pipfile.lock /
RUN pip install pipenv && pipenv install --system

COPY . /

docker buildコマンドでDockerfileをビルドします。

$ docker build .
Sending build context to Docker daemon  155.1kB
...
Step 7/7 : COPY . /
 ---> d239897dhfii9u”
Successfully built d26473003af
$touch docker-compose.yml

docker-compose.ymlに以下の内容を追記します。

version: '3.7'

services:
  web:
    build: .
    command: python manage.py runserver 0.0.0.0:8000
    ports:
      - 8000:8000

docker-compose up コマンドを用いてコンテナを起動します。

$ docker-compose up
Creating network...
...
web_1  | System check identified no issues (0 silenced).
web_1  | July 13, 2019 - 16:47:03
web_1  | Django version 2.2.3, using settings 'hello_project.settings'
web_1  | Starting development server at http://0.0.0.0:8000/
web_1  | Quit the server with CONTROL-C.

http://127.0.0.1:8000 をブラウザで表示するとDjango welcome pageが表示されました。これでDocker上にDjangoを起動することができました。

CONTROL-Cで終了させたあとdocker-compose downを用いてコンテナを完全に停止させます。

$ docker-compose down
3
3
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
3
3