ユーザ用ツール

サイト用ツール


サイドバー

このページの翻訳:



最近の更新



Tag Cloud

06_virtualization:05_container:27_docker_django

文書の過去の版を表示しています。


27 Docker Djnago

Docker でJango環境を作ってみる。

pipでのインストールは、01 Django install です。

1 ファイル用意

Dockerfile

FROM python:3.11
ENV PYTHONUNBUFFERED 1
RUN mkdir /code
WORKDIR /code
ADD requirements.txt /code/
RUN pip3 install -r requirements.txt
ADD . /code/
EXPOSE 8000

requirements.txt

Django>=4.2
mysqlclient==1.4.6

docker-compose.yml

version: '3'
services:
 web:
   container_name: "django"
   build: .
   command: python3 manage.py runserver 0.0.0.0:8000
   working_dir: /code
   ports:
     - 8000:8000
   volumes:
     - .:/code
   depends_on:
     - db
   environment:
     - CHOKIDAR_USEPOLLING=true
 db:
   container_name: "db"
   image: mysql:5.7
   restart: always
   environment:
     MYSQL_DATABASE: "db"
     MYSQL_ROOT_PASSWORD: 'password'
   volumes:
     - ./mysql:/var/lib/mysql
   ports:
     - 3306:3306

※CHOKIDAR_USEPOLLING=Trueを入れておくと、編集するとホットリロードしてくれる。

2 build

docker-compose build

3 Jangoプロジェクト作成

※[プロジェクト名]の後ろのドットが重要

docker-compose run web django-admin startproject [プロジェクト名] .

例:

docker-compose run web django-admin startproject testproject .

プロジェクト作成後

[プロジェクト名]/settings.pyに下記を追加

DATABASES = {
    'default': {
    'ENGINE': 'django.db.backends.mysql',
    'NAME': 'db',
    'USER': 'root',
    'PASSWORD': 'password',
    'HOST': 'db',
    'POST': 3306,
    'OPTIONS': {
      'charset': 'utf8mb4'
    }
  }
}

4 起動

docker-compose up -d

5 確認

ブラウザで http://[IP]:8000 をアクセス

6 自動起動

再起動後の自動起動は、/etc/rc.localを使うのが良いかも

Docker iptablesの話

/etc/rc.local

#!/bin/sh

sleep 5
iptables -I DOCKER-USER -p tcp --dport 3306 -d 0.0.0.0/0 -d 172.23.0.2 -j DROP
iptables -I DOCKER-USER -p tcp --dport 3306 -s 172.23.0.3 -d 172.23.0.2  -j ACCEPT
iptables -I DOCKER-USER -p tcp --dport 3306 -s 192.168.10.10 -d 172.23.0.2 -j ACCEPT

docker start django
06_virtualization/05_container/27_docker_django.1702370521.txt.gz · 最終更新: 2023/12/12 17:42 by matsui