[PYTHON] Ich habe eine Entwicklungsumgebung für Django 3.0 mit Docker, Docker-Compose und Poetry erstellt

Einführung

Erstellen Sie eine Django-Entwicklungsumgebung mit Docker und Docker-Compose. Es gibt bereits Artikel, die von anderen Personen verfasst wurden, die mit Docker eine Entwicklungsumgebung erstellen, aber viele verwenden require.txt für die Bibliotheksverwaltung, und die aktuelle Paketverwaltung verwendet hauptsächlich Pipenv oder Poetry. Ich denke, es gibt einen Trend, der sich entwickelt

Zitat: Best Practices für die Python-Paketverwaltung für 2020

Ich dachte, es wäre besser, Poesie zu verwenden, mit der Sie die Abhängigkeiten auch bei der Entwicklung mit Docker auf einen Blick sehen können. Deshalb habe ich diesen Artikel geschrieben.

Außerdem persönlich möchte ich den Container nicht mit dem Docker-Befehl in der Entwicklungsumgebung starten (Docker-Compose ist einfacher), daher schreibe ich, wie der Container mit Docker-Compose gestartet wird.

Inhaltsverzeichnis

  1. Prämisse
  2. Betriebsumgebung
  3. Docker-Datei erstellen
  4. Django-Projekt erstellen
  5. Docker-compose.yml erstellen
  6. Container starten (#a)
  7. Endlich

Annahme

Verstehen Sie die grundlegenden Docker- und Poesiebefehle. Docker ist bereits installiert Docker-Compose ist ebenfalls installiert

Ich werde die Installationsmethode weglassen, da viele Artikel von anderen Personen geschrieben wurden.

Betriebsumgebung

Erstellen einer Docker-Datei

Erstellen Sie eine leere Docker-Datei


$ touch Dockerfile

Verwenden Sie das offizielle Docker Hub Python-Image. Schreiben Sie die Docker-Datei wie folgt. Da der Aufbau der Alpen lange dauert, verwenden wir eine normale Ubuntu-Basis.

FROM python:3.8
WORKDIR /app

ENV PYTHONPATH /app
ENV LC_ALL=C.UTF-8 LANG=C.UTF-8

RUN apt-get update && apt-get install -y --no-install-recommends \
  git \
  vim \
  && rm -rf /var/lib/apt/lists/*

#Pip Update
RUN pip install --upgrade pip setuptools wheel
#Installieren Sie Poetry
RUN pip install poetry

#Deaktivieren Sie das Erstellen einer virtuellen Umgebung im Container
RUN poetry config virtualenvs.create false
RUN poetry config virtualenvs.in-project true

CMD ["bash"]

Die Standardeinstellungen von Poetry versuchen, während der Installation eine virtuelle Umgebung zu erstellen poetry config virtualenvs.create false poetry config virtualenvs.in-project true Deaktivieren wir es mit.

Erstellen Sie die erstellte Docker-Datei. Dieses Mal erstellen wir ein Bild mit dem Namen "django".

$ docker build -t django .

$ docker run -itd  --name django-setting django

Gehen Sie in den Container und installieren Sie die erforderlichen Bibliotheken und erstellen Sie ein neues Django-Projekt.


# django-Geben Sie den Einstellungscontainer ein
$ docker exec -it django-setting bash

#Überprüfen Sie, ob Poetry installiert ist
<Container>:/app# pip list | grep poetry
poetry            1.0.3 

#Poesie Anfangseinstellungen
<Container>:/app# poetry init

Ja oder überspringen ist OK

console



Package name [app]:  
Version [0.1.0]:  
Description []:  
Author [None, n to skip]:  n
License []:  
Compatible Python versions [^3.8]:  
Would you like to define your main dependencies interactively? (yes/no) [yes] 
Search for package to add (or leave blank to continue): 
Would you like to define your dev dependencies (require-dev) interactively (yes/no) [yes] 
Search for package to add (or leave blank to continue): 
Do you confirm generation? (yes/no) [yes] 

Stellen Sie sicher, dass pyproject.toml unter / app erstellt wurde, und installieren Sie django


<Im Container>:/app# ls
pyproject.toml

<Im Container>:/app# poetry add django

Django-Projekterstellung


#Der Projektname ist Projekt.
<Im Container>:/app# django-admin startproject project .

#Bestätigen Sie, dass es erstellt wurde
<Im Container>:/app# ls
manage.py  poetry.lock  project  pyproject.toml

Verlassen Sie den Container mit Strg + d.

Kopieren Sie das erstellte Projekt aus dem Container in das src-Verzeichnis des Hosts


#Überprüfen Sie die Container-ID
$ docker ps
$ docker cp <Container ID>:/app/ src

Aktualisieren Sie die Docker-Datei. Beschreiben Sie die Kopie von pyproject.toml, die zuvor vom Container auf den Host in den Container kopiert wurde. Durch die Installation von Gedichten wird die in pyproject.toml geschriebene Bibliothek Es wird auf pip installiert, sobald das Image erstellt wurde.


FROM python:3.8
WORKDIR /app

ENV PYTHONPATH /app
ENV LC_ALL=C.UTF-8 LANG=C.UTF-8

RUN apt-get update && apt-get install -y --no-install-recommends \
  git \
  vim \
  && rm -rf /var/lib/apt/lists/*

RUN pip install --upgrade pip setuptools wheel
RUN pip install poetry

RUN poetry config virtualenvs.create false
RUN poetry config virtualenvs.in-project true

COPY src/pyproject.toml pyproject.toml #hinzufügen
RUN poetry install #hinzufügen

CMD ["bash"]

Ich habe die Docker-Datei neu geschrieben, also lösche den alten Container

$ docker ps #Bestätigung der Container-ID
$ docker rm -f <Container ID> # django-Einstellungscontainer gelöscht

Docker-compose.yml erstellen

Erstellen Sie eine leere docker-compose.yml


$ touch docker-compose.yml

Nachdem die Docker-Datei fertig ist, richten wir docker-compose.yml ein.

docker-compose.yml



version: "3"
services:
  django:
    build:
      context: .
      dockerfile: Dockerfile
    ports:
      - "8000:8000"
    volumes:
      - ./src:/app
    command: "python3 manage.py runserver 0.0.0.0:8000"
    tty: true

Endverzeichnis

.
├── Dockerfile
├── docker-compose.yml
└── src
    ├── manage.py
    ├── project
    ├── pyproject.toml
    └── poetry.lock

Container starten


$ docker-compose build
$ docker-compose up

console



Starting django-docker_django_1 ... done
Attaching to django-docker_django_1
django_1  | Watching for file changes with StatReloader
django_1  | Performing system checks...
django_1  | 
django_1  | System check identified no issues (0 silenced).
django_1  | 
django_1  | You have 17 unapplied migration(s). Your project may not work properly until you apply the migrations for app(s): admin, auth, contenttypes, sessions.
django_1  | Run 'python manage.py migrate' to apply them.
django_1  | 
django_1  | February 06, 2020 - 09:38:45
django_1  | Django version 3.0.3, using settings 'project.settings'
django_1  | Starting development server at http://0.0.0.0:8000/
django_1  | Quit the server with CONTROL-C.

http://localhost:8000 Sie sollten es sehen können, wenn Sie darauf zugreifen!

django-first.png

cat pyproject.toml
[tool.poetry]
name = "app"
version = "0.1.0"
description = ""
authors = ["Your Name <[email protected]>"]

[tool.poetry.dependencies]
python = "^3.8"
django = "^3.0.3"

[tool.poetry.dev-dependencies]

[build-system]
requires = ["poetry>=0.12"]
build-backend = "poetry.masonry.api"

Ich kann Pakete verwalten!

Schließlich

Danke für deine harte Arbeit.

Quelle: https://github.com/k4ssyi/django-docker

https://twitter.com/k4ssyi

Recommended Posts

Ich habe eine Entwicklungsumgebung für Django 3.0 mit Docker, Docker-Compose und Poetry erstellt
[DynamoDB] [Docker] Erstellen Sie mit Docker-Compose eine Entwicklungsumgebung für DynamoDB und Django
Erstellen Sie eine Entwicklungsumgebung mit Poetry Django Docker Pycharm
Erstellen Sie mit Docker eine Django-Entwicklungsumgebung! (Docker-compose / Django / postgreSQL / nginx)
[Memo] Erstellen Sie mit Docker eine Entwicklungsumgebung für Django + Nuxt.js
[Python] Erstellen Sie mit Docker eine Django-Entwicklungsumgebung
[Django] Erstellen Sie mit PyCharm schnell eine Entwicklungsumgebung für Django-Container (Docker)
Ich habe eine WEB-Bewerbung bei Django gemacht
Ich habe versucht, eine Docker-Datei für die Entwicklungsumgebung von Django zu erstellen
Erstellen Sie mit der Doker Toolbox eine Django-Entwicklungsumgebung
Holen Sie sich mit Poetry eine schnelle Python-Entwicklungsumgebung
Ich habe mit Play with Docker einen gebrauchsfertigen Syslog-Server erstellt
Ich habe mit Tkinter ein Fenster für die Protokollausgabe erstellt
Starten Sie Django auf einem Docker-Container mit Docker-Compose Up
Erstellen Sie eine lokale Entwicklungsumgebung mit WSL + Docker Desktop für Windows + Docker-Lambda + Python
Erstellen Sie eine Django-Umgebung mit Docker-Compose (MariaDB + Nginx + uWSGI).
Erstellen einer Django-Umgebung für Win10 (mit virtuellem Speicherplatz)
Ich habe einen Ressourcenmonitor für Raspberry Pi mit einer Tabelle erstellt
Holen Sie sich eine saubere Python-Entwicklungsumgebung mit pyenv + pipx + Poetry
Erstellen Sie mit VSCode & Docker Desktop eine einfache Python-Entwicklungsumgebung
Erstellen einer Todo-App mit Django ① Erstellen Sie eine Umgebung mit Docker
Stellen Sie die Django-Anwendung mit Docker bereit
[Für Anfänger] Django -Entwicklungsumgebung Bau-
Ich habe mit Python eine Lotterie gemacht.
Ich habe mit Python einen Daemon erstellt
Erstellen Sie die Entwicklungsumgebung von Django mit Docker neu! !! !! !!
Aufbau einer Django-Entwicklungsumgebung mit Docker-Compose + Nginx + uWSGI + MariaDB (macOS Edition)
Ich habe viele Dateien für die RDP-Verbindung mit Python erstellt
Postgres-Umgebungskonstruktion mit Docker Ich hatte ein wenig Probleme, also beachten Sie
Ich habe ein Dash-Docset für Holoviews erstellt
Einfacher RSS-Reader mit Django
Erstellen Sie mit Laragon ganz einfach eine Entwicklungsumgebung
Ich habe mit Python einen Zeichenzähler erstellt
Erstellen Sie mit Docker-Compose eine schnelle API-Umgebung
Holen Sie sich mit Docker eine lokale Umgebung für DynamoDB
[Linux] Erstellen einer Jenkins-Umgebung mit Docker
Ich habe mit Python eine Hex-Map erstellt
Ich habe ein Lebensspiel mit Numpy gemacht
Ich habe einen Hanko-Generator mit GAN gemacht
Ich habe mit Python ein schurkenhaftes Spiel gemacht
Erstellen einer Python-Entwicklungsumgebung für die KI-Entwicklung
Erstellen einer Entwicklungsumgebung für maschinelles Lernen
Ich habe mit Python einen einfachen Blackjack gemacht
Ich habe mit Python eine Einstellungsdatei erstellt
Ich habe eine Bibliothek für versicherungsmathematische Versicherungen erstellt
Ich habe mit Python einen Neuronensimulator erstellt
[Linux] Aufbau einer Docker-Umgebung mit Amazon Linux 2
Ich habe einen Docker-Container erstellt, um JUMAN ++, KNP, Python (für pyKNP) zu verwenden.
[Django] Erstellt ein Feld zur Eingabe von Daten mit 4-stelligen Zahlen
Mit Docker durchgeführte Umgebungswartung (Ich möchte GrADS in Python nachbearbeiten
Ich habe versucht, eine Mac Python-Entwicklungsumgebung mit pythonz + direnv zu erstellen
Ich habe ein WebAPI gemacht! Erstellen einer Umgebung aus Django Rest Framework 1 mit EC2
Ich habe einen Stempelersatzbot mit Linie gemacht
Erstellen Sie eine Entwicklungsumgebung für die C-Sprache mit einem Container
Ich habe eine Python-Wörterbuchdatei für Neocomplete erstellt