So erstellen Sie eine Django (Python) -Umgebung auf Docker

So erstellen Sie eine Django (Python) -Umgebung auf Docker

Eine Zusammenfassung des Verfahrens zum Erstellen eines Projekts und einer Anwendung mit Django on Docker und zum Anzeigen im Browser mithilfe des Entwicklungsservers.

Verfahren

  1. [PJ-Verzeichnis erstellen](# pj-Verzeichnis erstellen)
  2. [Datei "require.txt erstellen](Datei #requirementstxt erstellen)
  3. [Docker-Datei erstellen](Docker-Datei erstellen)
  4. [Create docker-compose.yml](Create Docker compose yml)
  5. [Container aus der Konfigurationsdatei erstellen](Container aus der Konfigurationsdatei erstellen)
  6. [Settigs.py bearbeiten](Settigspy bearbeiten)
  7. Container starten (Container starten)
  8. [App erstellen](App erstellen)
  9. View.py bearbeiten (viewspy bearbeiten)
  10. [URLs.py erstellen und bearbeiten](URLspy erstellen und bearbeiten)

> Referenzierte Site ・ [Docker offiziell Django erstellen](https://docs.docker.com/compose/django/) ・ [Django offizielle erste App-Erstellung](https://docs.djangoproject.com/ja/3.1/intro/tutorial01/)

Erstellen eines PJ-Verzeichnisses

mkdir django
cd django

Erstellen einer Datei "require.txt"

Erstellen Sie eine Datei, die das zu installierende Paket angibt.

touch requirements.txt

requirements.txt


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

Installieren Sie Django und Psycopg.

Psycopg ist ein Tool zur effizienten Nutzung von PostgreSQL. -binary ist eine Nur-Betriebssystem-Sprachversion, daher ist keine Kompilierung erforderlich.

Erstellen einer Docker-Datei

Erstellen Sie eine Docker-Datei, um ein Python3-Image zu erstellen.

touch dockerfile

dockerfile


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

Vom Bildnamen Ziehen Sie das angegebene Image vom Docker-Hub. (Finden Sie lokale, wenn nicht auf Dockerhub)

ENV Variablenname Umgebungsvariablen einstellen. Geben Sie 1 in die Variable PYTHONUNBUFFERED ein. Stellen Sie die Standardausgabe (stdout) und die Standardfehlerausgabe (stderr) der Konsolenausgabe sofort ein, wenn ein Fehler auftritt (deaktivieren Sie den Puffer wie bei der Option -u von Python).

PYTHONUNBUFFERED


・ `RUN-Befehl` Erstellen Sie im Container ein Verzeichnis mit dem Namen / code

WORKDIR-Verzeichnis Macht das angegebene Verzeichnis (/ code) zum Stammverzeichnis

· Host-Container KOPIEREN Kopieren Sie die Host-Anforderungen.txt unter / code / des Containers

· Pip install -r Dateipfad Installieren Sie das in der angegebenen Datei geschriebene Paket.

Im Allgemeinen verwendet die Datei die Datei require.txt. 「-r」 = 「--requirement」


## Docker-compose.yml erstellen Erstellen Sie eine Docker-Compose-Datei, um das Bild zu erstellen. Eine Datei zum Erstellen eines Bildes mit mehreren Containern. (Dockerfile ist nur ein Container)
touch docker-compose.yml

docker-compose.yml


version: "3.8"
   
services:
  db:
    image: postgres
    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:
      - "8100:8000"
    depends_on:
      - db

Bereiten Sie zwei Container im Bild vor.

Version:" 3.8 " Geben Sie die Version der Beschreibungsmethode von docker-compose.yml an. Es muss angegeben werden, da die Schreibmethode je nach Version unterschiedlich ist.

Dienstleistungen Der zu erstellende Container. Erstellen Sie zwei, db und web.

Bilder Geben Sie das zu verwendende Bild an. Erstellen Sie einen Container, indem Sie Postgres aus dem Docker-Hub ziehen.

Umwelt Umgebungsvariablen festlegen. Setzen Sie DB auf postgres. Benutzername und PW sind optional.

· Verzeichnispfad erstellen Erstellen Sie einen Container aus der Docker-Datei im angegebenen Verzeichnis.

Wenn kein Dateiname angegeben ist, wählen Sie Docker-Datei. Wenn Sie einen anderen Namen haben, geben Sie auch den Dateinamen an.

Befehl Ein Befehl, der in einem Container ausgeführt werden soll. Starten Sie den Server unter localhost: 8000.

Führen Sie runserver in manage.py aus. manage.py ist ein Befehlszeilenprogramm. Importieren Sie nützliche Befehle.

· Volumes: -Host: Container Verknüpfen (mounten) Sie das Host-Verzeichnis mit dem angegebenen Verzeichnis im Container.

Der Projektordner auf dem Host und / oder der Code im Container werden synchronisiert. ** Erstellen Sie für Dateien, die Sie nicht synchronisieren möchten, .dockerignore ** und beschreiben Sie den Datei- / Ordnernamen.


· `Ports: -" Host: Container "` Verbinden Sie den Port auf der Hostseite mit dem angegebenen Port auf der Containerseite.

Zugriff auf localhost: 8100 führt zu Port 8000 im Container.

Depends_on Verbinden Sie den Webcontainer mit dem Datenbankcontainer. Bisher wurde Link verwendet, aber in Version 2.0 und höher können die Container in docker-compose.yml über ein Netzwerk ohne spezielle Beschreibung verbunden werden. (Ist depon_on unnötig?)


## Erstellen Sie einen Container aus der Konfigurationsdatei
docker-compose run web django-admin startproject mysite

-Docker-compose run [Dienstname] [Befehl] Erstellen Sie einen Container mit dem angegebenen Dienstnamen und führen Sie den Befehl aus.

Erstellen Sie ein Bild basierend auf der Datei docker-comopse.yml im ausgeführten Ordner, erstellen Sie einen Container und starten Sie alles auf einmal.

Starten Sie hier den Webdienst.

Jjango-admin startporject PJ name Erstellen Sie einen PJ.

Ein Verzeichnis wird mit dem angegebenen PJ-Namen (mysite) erstellt.

Zu erstellende Datei


mysite/
    manage.py
    mysite/
        __init__.py
        settings.py
        urls.py
        asgi.py
        wsgi.py

## Settigs.py bearbeiten Schreiben Sie die DB-Einstellungen in mysite / settings.py. Da sqlite3 für die Grundeinstellung angegeben ist, überschreiben Sie es.

mysite/settings.py


DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.postgresql',
        'NAME': 'postgres',
        'USER': 'postgres',
        'PASSWORD': 'postgres',
        'HOST': 'db',
        'PORT': 5432,
    }
}

(Referenz) Standardbeschreibung


# Database
# https://docs.djangoproject.com/en/3.1/ref/settings/#databases

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.sqlite3',
        'NAME': BASE_DIR / 'db.sqlite3',
    }
}

## Container starten
docker-compose up

Kürzung
web_1  | Django version 3.1.2, using settings 'mysite.settings'
web_1  | Starting development server at http://0.0.0.0:8100/
web_1  | Quit the server with CONTROL-C.

Starten Sie den erstellten Container.

Der angegebene Server wird gestartet. Um den Status anzuzeigen, öffnen Sie ein anderes Bash-Fenster und führen Sie "Docker ps" aus.

$ docker ps
CONTAINER ID        IMAGE                       COMMAND                  CREATED             STATUS              PORTS                                            NAMES
9615ecd4098f        django_web                  "python manage.py ru…"   16 minutes ago      Up About a minute   0.0.0.0:8100->8000/tcp                           django_web_1

Wenn Sie möchten, dass es im Hintergrund beginnt, verwenden Sie up -d.

Die Seite wird geöffnet, wenn Sie auf localhost: 8100 zugreifen (Sie können im Container auf loaclhost: 8000 zugreifen).

image.png


## App erstellen Gehen Sie in den Container und erstellen Sie eine App.
##Starten Sie Bash in einem laufenden Container
$ docker exec -it django_web_1 bash
root@faef5f41e1c7


##Erstellen einer Django-App
root@faef5f41e1c7:/code# python manage.py startapp polls


##Überprüfen Sie den Ordner
root@faef5f41e1c7:/code# ls
Dockerfile  docker-compose.yml	manage.py  mysite  polls  requirements.txt

Es ist gelungen, Umfragen im Container zu erstellen. Ein Verzeichnis wird auch auf der Hostseite erstellt. (Weil das Volume angegeben und synchronisiert ist)

image.png

Unterschied zwischen Projekt und App

Der Befehl django führt ähnliche Befehle aus, startproject und startapp.

django-admin startproject mysite python manage.py startapp polls

Es gibt nur ein Projekt und es können mehrere Apps vorhanden sein.

Ein Status, in dem nur eine App namens Polls in einem Projekt namens mysite erstellt wird.


## Views.py bearbeiten Bearbeiten Sie views.py in dem zuvor erstellten Umfrageordner, um die Bildschirmanzeige zu steuern.

Da der Editor nicht im Container installiert ist, beenden Sie den Container einmal.

root@faef5f41e1c7:/code# exit

▼ Beschreiben Sie das Programm, das auf dem Bildschirm "Hallo, das sind Django-Umfragen" anzeigt.

polls/views.py


from django.http import HttpResponse


def index(request):
    return HttpResponse("Hello, This is Django Polls")

## URLs.py erstellen und bearbeiten Es ist notwendig, die URL in Umfragen und die URL als Projekt festzulegen.

polls/urls.py


from django.urls import path

from . import views

urlpatterns = [
    path('', views.index, name='index'),
]

mysite/urls.py


from django.contrib import admin
from django.urls import include, path

urlpatterns = [
    path('polls/', include('polls.urls')),
    path('admin/', admin.site.urls),
]

Erkennen Sie polls urls.py als Pfad und machen Sie es mit polls / zugänglich.

Laden Sie nach dem Schreiben die Seite mit "localhost: 8100 / polls".

image.png

Die Anzeige ist erfolgreich abgeschlossen.

Recommended Posts

So erstellen Sie eine Django (Python) -Umgebung auf Docker
So erstellen Sie eine Python-Umgebung unter Amazon Linux 2
So erstellen Sie eine neue virtuelle Python-Umgebung unter Ubuntu
[Python] Erstellen Sie mit Docker eine Django-Entwicklungsumgebung
So erstellen Sie eine Python-Umgebung mit Virtualenv unter Ubuntu 18.04 LTS
Erstellen Sie eine Python3-Umgebung unter CentOS7
So führen Sie eine Django-Anwendung auf einem Docker-Container aus (Entwicklungs- und Produktionsumgebung)
Erstellen einer Entwicklungsumgebung für die Python2.7-Serie mit Vagrant
So erstellen Sie eine Sphinx-Übersetzungsumgebung
Erstellen Sie eine Python-Umgebung unter MacOS (Catallina)
Ich möchte eine Python-Umgebung erstellen
Erstellen Sie eine Python + OpenCV-Umgebung in Cloud9
So erstellen Sie eine schöne Python-Umgebung auf einem neuen Mac und installieren Jupter Notebook
# 3 Erstellen Sie eine Python-Umgebung (Django) mit einer EC2-Instanz (ubuntu18.04) von AWS part2
Erfahren Sie, wie Sie Docker verwenden, indem Sie eine Umgebung für Django + MySQL erstellen
Erstellen Sie eine LAMP-Umgebung auf Ihrem lokalen Docker
Erstellen Sie einfach eine Python 3-Ausführungsumgebung unter Windows
[Neueste] So erstellen Sie eine Java-Umgebung unter Ubuntu
Erstellen Sie eine Python-Umgebung mit ansible auf centos6
Erstellen Sie eine Python-Umgebung auf einem Mac (Mountain Lion)
Erstellen Sie eine Python-Entwicklungsumgebung auf Ihrem Mac
Erstellen Sie mit IntelliJ schnell eine Python Django-Umgebung
Erstellen Sie eine Python-Entwicklungsumgebung auf Raspberry Pi
Erstellen Sie mit Docker auf RaspberryPi3 eine Python + Flasche + MySQL-Umgebung! [Einfache Konstruktion]
Erstellen Sie eine Python-Umgebung unter Windows
Erstellen Sie eine Python-Umgebung mit Windows
Erstellen Sie die Python-Umgebung offline
Erstellen Sie eine GVim-basierte Python-Entwicklungsumgebung unter Windows 10 (3) GVim8.0 und Python3.6
Erstellen einer Django-Entwicklungsumgebung mit pyenv-virtualenv auf einem Mac
So richten Sie eine Python-Umgebung mit pyenv ein
# 2 Erstellen Sie eine Python-Umgebung mit einer EC2-Instanz von AWS (ubuntu18.04).
So stellen Sie eine Django-Anwendung in der Alibaba-Cloud bereit
Erstellen Sie eine Python-Umgebung für maschinelles Lernen unter Mac OS
Erstellen Sie eine GVim-basierte Python-Entwicklungsumgebung unter Windows 10 (1)
Erstellen Sie eine Python-Entwicklungsumgebung unter Mac OS X.
Erstellen Sie eine virtuelle Python-Umgebung mit venv (Django + MySQL ①)
[Go + Gin] Ich habe versucht, eine Docker-Umgebung zu erstellen
Erstellen Sie mit pyenv eine Python-Umgebung auf Ihrem Mac
So erstellen Sie eine Entwicklungsumgebung für TensorFlow (1.0.0) (Mac)
Erstellen Sie eine Python-Entwicklungsumgebung mit pyenv unter MacOS
Verwendung von Django mit Google App Engine / Python
So führen Sie Django unter IIS auf einem Windows-Server aus
Erstellen Sie eine Entwicklungsumgebung mit Poetry Django Docker Pycharm
So erstellen Sie eine Umgebung für die Verwendung mehrerer Python-Versionen auf einem Mac
Erstellen Sie mit Docker auf RaspberryPi3 eine Python + Flasche + MySQL-Umgebung! [Versuch und Irrtum]
Docker bauen Python basierend auf alpinen
Erstellen einer Python-Umgebung auf einem Mac
Erstellen Sie mit Docker eine Go-Umgebung
Erstellen Sie eine Python-Umgebung auf dem Mac (2017/4)
Erstellen Sie eine MySQL + Python-Umgebung mit Docker
Erstellen Sie eine Python-Umgebung in Centos
So löschen Sie einen Docker-Container
Erstellen Sie die Python 3.8 + Pipenv-Umgebung unter Ubuntu 18.04
Erstellen Sie mit macOS sierra eine Python-Lernumgebung für maschinelles Lernen
Ein Hinweis zur einfachen Vorbereitung einer Linux-Übungsumgebung
Erstellen Sie mit Docker eine Django-Entwicklungsumgebung! (Docker-compose / Django / postgreSQL / nginx)
[Memo] Erstellen Sie mit Docker eine Entwicklungsumgebung für Django + Nuxt.js
Verliere nicht gegen Ruby! Wie man Python (Django) auf Heroku ausführt