Docker für Django auf MySQL einrichten

Es gibt viele irrelevante Artikel im Internet, daher habe ich diese Veröffentlichung vorbereitet. Grundsätzlich habe ich mich beim Schreiben des Artikels auf das Beispiel der Konfiguration von Docker für Django in der Docker-Dokumentation gestützt .



Hier beschreiben wir das Docker-Setup für das Django-Framework und die MySQL-Datenbank, die außerhalb des Containers gespeichert werden, sodass Sie sich keine Sorgen machen müssen, dass etwas mit unserem Container passiert.



Beim Schreiben dieses Handbuchs wurde Folgendes verwendet:



  • Ubuntu 20.04
  • Docker 19.03.12
  • Docker-Compose 1.26.2
  • Python 3.8
  • MySQL 5.7
  • django 3.1.1
  • mysqlclient 2.0.1
  • django-mysql 3.8.1


Einrichtung des Arbeitsbereichs



Bevor Sie mit dem Setup beginnen, müssen Sie den Arbeitsbereich vorbereiten:



  1. Installieren Sie Docker und Docker-Compose . Der Installationsprozess ist in der Docker-Dokumentation beschrieben.
  2. Erstellen Sie ein Verzeichnis, in dem sich unser Projekt befindet (in diesem Beispiel Projekt). Erstellen Sie in diesem Verzeichnis ein weiteres Verzeichnis, in dem die Konfiguration zum Ausführen des Python-Images (in diesem Beispiel Web) gespeichert wird.


./project
      /web


Damit ist die Vorbereitung abgeschlossen und Sie können mit der Einrichtung unseres kleinen Projekts beginnen.



Anforderungen.txt



Erstellen Sie im Webverzeichnis eine Datei mit dem Namen require.txt.

In dieser Datei deklarieren wir Pakete, damit unsere Django-Anwendung funktioniert.



/project/web/requirements.txt



Django==3.1.1
mysqlclient==2.0.1
django-mysql==3.8.1


Wie Sie sehen können, ist Django selbst hier registriert, ebenso wie Pakete für die Kommunikation mit der MySQL-Datenbank.



.



Dockerfile



web Dockerfile.

Dockerfile . .



:



/project/web/Dockerfile



FROM python:3.8
ENV PYTHONUNBUFFERED 1
RUN mkdir /web_django
WORKDIR /web_django
COPY requirements.txt /web_django/
RUN pip install --upgrade pip && pip install -r requirements.txt
ADD . /web_django/ 


python , , . web_django .

pip (--upgrade pip), .. , .



docker-compose.yml



docker-compose.yml.



. - . compose , Docker , , . , .



.



/project/docker-compose.yml



version: '3'

services:
  web:
    build: ./web
    command: python manage.py runserver 0.0.0.0:8000
    volumes:
      - .:/web_django
    ports:
      - '8000:8000'
    depends_on:
      - db
  db:
    image: mysql:5.7
    ports:
      - '3306:3306'
    environment:
      MYSQL_DATABASE: 'db_django'
      MYSQL_USER: 'root'
      MYSQL_PASSWORD: 'password'
      MYSQL_ROOT_PASSWORD: 'password'
    restart: always
    volumes:
      - ./db_django:/var/lib/mysql


web/Dockerfile . django 8000 . mysql.



mysql. : , , , ( , , ) , . , , , , mysql .



. django .



django



(project/) . django web_django.



sudo docker-compose run web django-admin startproject web_django .


:



drwxr-xr-x   6 root  root   4,0K   16 21:49 db_django
-rw-rw-r--   1 kafka kafka  466    16 21:31 docker-compose.yml
-rwxr-xr-x   1 root  root   666    16 21:34 manage.py
drwxrwxr-x   2 kafka kafka  4,0K   16 21:31 web
drwxr-xr-x   3 root  root   4,0K   16 21:34 web_django


, .. root .



sudo chown -R $USER:$USER web_django




Öffnen Sie die Django-Einstellungsdatei des Projekts unter dem Pfad web_django / settings.py.

In dieser Datei ersetzen wir die Einstellungen für die Datenbankverbindung , die wir in docker-compose.yml angegeben haben.



/project/web_django/settings.py



DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'db_django',
        'USER': 'root',
        'PASSWORD': 'password',
        'HOST': 'db',
        'PORT': '3306',
    }
}


Jetzt ist alles fertig und Sie können Docker-Compose ausführen.



Start des Projekts



Führen Sie diesen Befehl aus, um Container zu starten



docker-compose up


Um Container im Hintergrund auszuführen, müssen Sie ein zusätzliches Argument angeben



docker-compose up -d


Um Bilder neu zu erstellen, können Sie den Befehl ausführen



docker-compose build


Datenbankmigration



Führen Sie die folgenden Befehle aus, um die Datenbank zu migrieren:



docker-compose run web python manage.py makemigrations


docker-compose run web python manage.py migrate



All Articles