[Python] Erstellen Sie mit Docker eine Django-Entwicklungsumgebung

Wir werden eine Entwicklungsumgebung für Django und postgreSQL mit Docker und Docker-Compose erstellen. Klicken Sie auf "http: // localhost: 8000", bis der unten gezeigte Bildschirm angezeigt wird.

スクリーンショット 2020-08-28 13.44.31.png

Django Installation

Wenn Sie bereits Django haben, müssen Sie nicht.

pip install Django

Installieren Sie Docker

Installieren Sie Docker von hier

** Version prüfen **

$ docker --version
Docker version 18.09.2

Installieren Sie Docker-compose

Installieren Sie Docker-compose mit dem folgenden Befehl.

$ curl -L https://github.com/docker/compose/releases/download/1.24.0/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose

$ chmod +x /usr/local/bin/docker-compose

** Version prüfen **

$ docker-compose --version
docker-compose version 1.23.2

Erstellen Sie ein Verzeichnis für Django

$ mkdir docker-demo-with-django && cd docker-demo-with-django
$ mkdir app && cd app

Pipfile in App erstellen

$ vi Pipfile

/app/Pipfile

[[source]]
name = "pypi"
url = "https://pypi.org/simple"
verify_ssl = true

[dev-packages]

[packages]
Django = "==3.1"

[requires]
python_version = "3.7.5"

Pipenv eingeführt

Verwenden Sie den folgenden Befehl, um alles von der Installation bis zur Anmeldung auszuführen.

$ pip install pipenv
$ pipenv install
$ pipenv shell

Start des Django-Projekts

Verwenden Sie den folgenden Befehl, um das Projekt und den Server zu starten.

$ django-admin.py startproject django_demo .
$ python manage.py migrate
$ python manage.py runserver

Erstellen Sie einen Docker-Container

Von hier aus richten wir den Docker-Container ein.

Dockerfile

Erstellen Sie eine Docker-Datei

$ vi Dockerfile

app/Dockerfile

#Python3 vom Beamten.7 auf alpine pull linux image
FROM python:3.7-alpine

#Arbeitsverzeichnis einstellen
WORKDIR /usr/src/app

#Umgebungsvariablen festlegen
#Verhindern Sie, dass Python in Pyc-Dateien und -Discs schreibt
ENV PYTHONDONTWRITEBYTECODE 1
#Verhindern Sie, dass Python Standard-E / A puffert
ENV PYTHONUNBUFFERED 1

#Installation von psycopg2
RUN apk update \
    && apk add --virtual build-deps gcc python3-dev musl-dev \
    && apk add postgresql-dev \
    && pip install psycopg2 \
    && apk del build-deps

#Installieren Sie Pipenv
RUN pip install --upgrade pip \
&& pip install pipenv

#Kopieren Sie die Host-Pipfile in das Arbeitsverzeichnis des Containers
COPY ./Pipfile /usr/src/app/Pipfile

#Erstellen Sie eine Django-Umgebung, indem Sie Pakete aus der Pipfile installieren
RUN pipenv install --skip-lock --system --dev

#Kopieren Sie das aktuelle Verzeichnis des Hosts (derzeit das App-Verzeichnis) in Ihr Arbeitsverzeichnis
COPY . /usr/src/app/

# entrypoint.lauf sh
ENTRYPOINT ["/usr/src/app/entrypoint.sh"]                 

Erstellen Sie docker-compose.yml

vi ./../docker-compose.yml

docker-demo-with-django/docker-compose.yml

version: '3.7'

services:
    #Der Dienstname kann frei eingestellt werden
    django:
        #Aus dem App-Verzeichnis`Dockerfile`Finden
        build: ./app
        #Stellen Sie den Befehl ein, der nach dem Starten des Dienstes eingegeben werden soll
        command: python manage.py runserver 0.0.0.0:8000
        #Einstellungen für persistente Daten.`host:container`Beschreiben Sie den Pfad mit
        volumes:
            - ./app/:/usr/src/app/
        #Geben Sie den zu öffnenden Port an.`host:container`Listen Sie den Port in
        ports:
            - 8000:8000
        #Geben Sie die Umgebungsvariable an
        environment:
            #1 ist der Zurück-Modus
            - DEBUG=1
            - SECRET_KEY=hoge
            - DATABASE_ENGINE=django.db.backends.postgresql
            - DATABASE_DB=django_db
            - DATABASE_USER=django_db_user
            - DATABASE_PASSWORD=password1234
            - DATABASE_HOST=postgres
            - DATABASE_PORT=5432
        #Geben Sie den zu verbindenden Dienst an
        depends_on:
            - postgres

    postgres:
        #Ziehen Sie das Bild vom Beamten
        image: postgres:11.4-alpine
        #Datenbankpersistenz
        #Zu Beginn, um nicht im Host-Verzeichnis zu mounten`./`Nicht anhängen
        volumes:
            - postgres_data:/var/lib/postgresql/data
        #Erstellen Sie eine Datenbank mit su-Berechtigungen und demselben Namen wie der angegebene Benutzer
        #Geben Sie den Wert auf die gleiche Weise ein, wie im Django-Dienst angegeben
        environment:
            - POSTGRES_USER=django_db_user
            - POSTGRES_PASSWORD=password1234
            - POSTGRES_DB=django_db

#Auf der obersten Ebene geschriebene "benannte Volumes" können von mehreren Diensten aus referenziert werden
volumes:
    postgres_data:         
#!/bin/sh

if [ "$DATABASE" = "postgres" ]
then
    echo "Waiting for postgres..."

    while ! nc -z $DATABASE_HOST $DATABASE_PORT; do
      sleep 0.1
    done

    echo "PostgreSQL started"
fi

python manage.py flush --no-input
python manage.py migrate

exec "$@"

Erstellen und starten

$ docker-compose up -d --build

Stellen Sie eine Verbindung mit der folgenden URL her. Wenn Sie eine Verbindung herstellen können, ist die Erstellung abgeschlossen http://localhost:8000

Recommended Posts

[Python] Erstellen Sie mit Docker eine Django-Entwicklungsumgebung
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
[Django] Erstellen Sie mit PyCharm schnell eine Entwicklungsumgebung für Django-Container (Docker)
Erstellen Sie mit der Doker Toolbox eine Django-Entwicklungsumgebung
Erstellen Sie mit IntelliJ schnell eine Python Django-Umgebung
[DynamoDB] [Docker] Erstellen Sie mit Docker-Compose eine Entwicklungsumgebung für DynamoDB und Django
Erstellen Sie eine MySQL + Python-Umgebung mit Docker
So erstellen Sie eine Django (Python) -Umgebung auf Docker
Erstellen Sie mit Python eine Entwicklungsumgebung für maschinelles Lernen
Erstellen Sie mit Laragon ganz einfach eine Entwicklungsumgebung
Erstellen Sie mit Docker eine Jupyter Lab (Python) -Umgebung
Erstellen einer Entwicklungsumgebung für die Python2.7-Serie mit Vagrant
Erstellen Sie mit VSCode & Docker Desktop eine einfache Python-Entwicklungsumgebung
[Linux] Erstellen einer Jenkins-Umgebung mit Docker
Erstellen einer Todo-App mit Django ① Erstellen Sie eine Umgebung mit Docker
Erstellen Sie mit pyenv eine virtuelle Umgebung für Python
Erstellen Sie mit Neovim eine moderne Python-Umgebung
Erstellen Sie eine lokale Entwicklungsumgebung mit WSL + Docker Desktop für Windows + Docker-Lambda + Python
[Linux] Aufbau einer Docker-Umgebung mit Amazon Linux 2
Ich habe eine Entwicklungsumgebung für Django 3.0 mit Docker, Docker-Compose und Poetry erstellt
Erstellen Sie eine Python-Entwicklungsumgebung mit Visual Studio Code
Erstellen Sie mit Sublime Text3 eine Python3-Build-Umgebung
Erstellen Sie mit Vagrant in 5 Minuten eine Django-Umgebung
Erstellen Sie mit Docker eine Umgebung aus Nginx + uWSGI + Python (Django)
Erstellen Sie eine Python-Entwicklungsumgebung auf Ihrem Mac
Erstellen einer Python-Umgebung mit OSX Elcapitan
Erstellen Sie eine Python-Umgebung für maschinelles Lernen mit Containern
Erstellen Sie eine Python-Entwicklungsumgebung auf Raspberry Pi
Erstellen Sie eine Python-Ausführungsumgebung mit VS-Code
Holen Sie sich mit Poetry eine schnelle Python-Entwicklungsumgebung
Erstellen Sie eine Python3-Umgebung mit Ubuntu 16.04
Bereiten Sie die Python3-Umgebung mit Docker vor
Erstellen Sie mit direnv eine Python-Umgebung
[ev3dev × Python] Aufbau einer ev3dev-Entwicklungsumgebung
Erstellen Sie die Python-Umgebung offline
Erstellen Sie mit Docker auf RaspberryPi3 eine Python + Flasche + MySQL-Umgebung! [Einfache Konstruktion]
Ich habe versucht, eine Mac Python-Entwicklungsumgebung mit pythonz + direnv zu erstellen
Erstellen einer Django-Entwicklungsumgebung mit pyenv-virtualenv auf einem Mac
Erstellen Sie eine virtuelle Python-Umgebung mit virtualenv und virtualenvwrapper
Erstellen Sie mit pyenv-virtualenv eine Python-Umgebung für jedes Verzeichnis
Erstellen Sie eine Python-Entwicklungsumgebung mit Vagrant + Ansible + Fabric
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 ①)
Erstellen Sie eine virtuelle Python-Umgebung mit virtualenv und virtualenvwrapper
Erstellen Sie eine Python-Entwicklungsumgebung mit pyenv unter MacOS
Ein Memo zum Erstellen einer Django (Python) -Anwendung mit Docker
Richten Sie mit Sublime Text 2 eine Python-Entwicklungsumgebung ein
Erstellen einer Django-Umgebung für Win10 (mit virtuellem Speicherplatz)
Erstellen Sie mit Docker eine einfache Fast API-Entwicklungsumgebung
Lernverlauf zur Teilnahme an der Entwicklung von Teamanwendungen mit Python ~ Build Docker / Django / Nginx / MariaDB-Umgebung ~
Erstellen Sie mit Docker eine Go-Umgebung
Erstellen Sie eine Deb-Datei mit Docker
Stellen Sie die Django-Anwendung mit Docker bereit