アプリケーションコンテナの作成

Djangoアプリケーション用のDockerファイルを作成します。

mkdir -p docker/app
touch docker/app/Dockerfile
trouch docker-compose.dev.yml
docker/app/Dockerfile
 1FROM python:3.11
 2
 3RUN apt-get update && \
 4    apt-get install -y curl default-libmysqlclient-dev build-essential pkg-config
 5
 6RUN adduser django && \
 7    usermod -aG www-data django
 8
 9USER django
10RUN curl -sSL https://install.python-poetry.org | python3 -
11COPY --chown=django:django ./mysite /home/django/mysite
12COPY --chown=django:django ./pyproject.toml /home/django/pyproject.toml
13WORKDIR /home/django
14ENV PATH="/home/django/.local/bin:$PATH"
15RUN poetry install
16
17WORKDIR /home/django/mysite
docker-compose.dev.yml
1version: '3.9'
2services:
3  app:
4    container_name: django
5    build:
6      dockerfile: ./docker/app/Dockerfile
7    ports:
8      - 8000:8000
9    command: poetry run python manage.py runserver 0.0.0.0:8000

アプリケーションコンテナをビルドします。

docker compose -f docker-compose.dev.yml build app

アプリケーションコンテナを起動します。

docker compose -f docker-compose.dev.yml up -d app

コンテナが起動していることを確認します。

docker compose -f docker-compose.dev.yml ps
NAME                IMAGE                      COMMAND                  SERVICE             CREATED             STATUS                   PORTS
django              django-docker-sample-app   "poetry run python m…"   app                 6 minutes ago       Up 6 minutes             0.0.0.0:8000->8000/tcp, :::8000->8000/tcp

ログにエラーがないことを確認します。

docker compose -f docker-compose.dev.yml logs

http://localhost:8000/polls/ にアクセスできることを確認します。

コンテナを終了します。

docker compose -f docker-compose.dev.yml down