ものづくりのブログ

うちのネコを題材にしたものづくりができたらいいなと思っていろいろ奮闘してます。

docker-compose を自分なりにまとめてみる(postgresとdjangoのアプリ)

今回はdockerを使ってpostgresとdjangoを使ったアプリの開発環境を作成する方法をここにメモしたいと思います。

docker-composeとは

docker-compose は複数のコンテナからなるシステムの構築をするためのツールと考えています。

docker-compose を使うまでのステップ

例えば、postgres と django を使ったアプリを作成する場合は以下のステップを踏みます。

作業フォルダ作成

作業フォルダを作成します。

Dockerfile 作成

Dockerfile は、そのイメージを構成するビルドコマンドを定義します。

# syntax=docker/dockerfile:1
FROM python:3
ENV PYTHONUNBUFFERED=1
WORKDIR /code
COPY requirements.txt /code/
RUN pip install -r requirements.txt
COPY . /code/

Dockerfile に記載している requirements.txt 作成

requirements.txt を作成し、python の必要なライブラリを追加します。

Django>=3.0,<4.0
psycopg2-binary>=2.8

docker-compose.yml 作成

docker-compose.yml というファイルを作成します。
アプリを作成するサービスを記述します。

version: "3.9"
   
services:
  db:
    image: postgres
    volumes:
      - ./data/db:/var/lib/postgresql/data
    environment:
      - POSTGRES_DB=postgres
      - POSTGRES_USER=postgres
      - POSTGRES_PASSWORD=postgres
  web:
    build: .
    command: python manage.py runserver 0.0.0.0:8000
    volumes:
      - .:/code
    ports:
      - "8000:8000"
    depends_on:
      - db

Djangoプロジェクト作成

django プロジェクトを作成します。

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

以下のコマンドを実行します。

$ docker-compose up -d

実行中のコンテナ確認

web ブラウザを立ち上げ http://localhost:8000/ にアクセスして以下のような表示がされたら成功です。
f:id:a1026302:20211126191509p:plain