このページの翻訳:
- 日本語 (ja)
- English (en)
最近の更新
Tag Cloud
このページへのアクセス
今日: 15 / 昨日: 2
総計: 1213
- Dokuwiki.fl8.jp(465)
- 13 CentOS6メール設定(23)
- 34 UnboundでHA構成(20)
- FreeBSD カーネル再構築(20)
- 05 rsync(20)
最近の更新
このページへのアクセス
今日: 15 / 昨日: 2
総計: 1213
Docker でJango環境を作ってみる。
pipでのインストールは、01 Django install です。
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 djangorestframework==3.14.0 django-cors-headers==4.3.1
docker-compose.yml
version: '3' services: django: 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:8.0 restart: always environment: MYSQL_DATABASE: "db" MYSQL_ROOT_PASSWORD: 'password' volumes: - ./mysql:/var/lib/mysql ports: - 3306:3306
※CHOKIDAR_USEPOLLING=Trueを入れておくと、編集するとホットリロードしてくれる。
25 Let's Encrypt リバースプロキシで、SSL化して利用する場合
docker-compose.yml
version: '3' services: django: 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 - VIRTUAL_HOST=django.fl8.jp - LETSENCRYPT_HOST=django.fl8.jp networks: - app_proxy-tier - default db: container_name: "db" image: mysql:8.0 restart: always environment: MYSQL_DATABASE: "db" MYSQL_ROOT_PASSWORD: 'password' volumes: - ./mysql:/var/lib/mysql ports: - 3306:3306 networks: app_proxy-tier: external: true
docker-compose build
※[プロジェクト名]の後ろのドットが重要
docker-compose run django django-admin startproject [プロジェクト名] .
例:
docker-compose run django 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' } } }
docker-compose up -d
この画面が出るので、ALLOWED_HOSTSにホスト名を追加
testproject/setting.py
ALLOWED_HOSTS = ['django.fl8.jp'] or ALLOWED_HOSTS = ['{IP}']
ブラウザで http://[IP]:8000 をアクセス
再起動後の自動起動は、/etc/rc.localを使うのが良いかも
/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