Construction de l'environnement de développement Django à l'aide de Docker-compose (mémorandum personnel)

introduction

Vous n'avez pas besoin de vous familiariser avec python ou Django car le serveur de base de données se concentre sur la construction d'un environnement «postgres». Pour démarrer le projet, créez un répertoire de travail n'importe où. Lorsque vous utilisez docker-compose, le nom du répertoire dans lequel se trouve le fichier docker-compose.yml est utilisé comme préfixe pour le nom du conteneur et le nom du volume, donc dans l'environnement réel, le nom du projet, etc. est ** significatif. Créez un nom de répertoire **.

Créer un annuaire

-#Créer un répertoire appelé django
% mkdir django
-#Déplacer vers le répertoire django
% cd django

N'incluez pas de fichiers inutiles car le répertoire django est le contexte de construction.

Créez un Dockerfile pour créer une image de l'environnement d'exécution Python.

% vim Dockerfile

Dockerfile


#Spécifiez l'image de l'environnement d'exécution de python3
FROM python:3
#Spécifiez 1 pour la variable d'environnement PYTHONUNBUFFERED. Vous pouvez invalider le tampon en définissant quelque chose dans cette variable d'environnement.
ENV PYTHONUNBUFFERED 1
#Créer un répertoire de code
RUN mkdir /code
#Déplacer le répertoire de travail vers le répertoire de code
WORKDIR /code
#Exigences sur le contexte de construction.Mettre txt dans le répertoire de code
COPY requirements.txt /code/
#Vous exécutez une installation pip. pip est un outil de package python
# -exigences spécifiées par r.Effectuez l'installation du package décrit dans txt.
# requirements.txt est créé dans le contexte de construction mais décrit le nom du package des pilotes django et Postgres.
RUN pip install -r requirements.txt
#Tout le contenu du contexte de construction/Il est placé dans le code.
COPY . /code/

Création de requirements.txt

% vim requirements.txt
-# version2.0 Installation de Django
Django==2.0
-#Pilote de connexion à postgres avec python
psycopg2

Création de docker-compose.yml

docker-compose.yml


version: '3'
services: 
  db:
    image: postgres
    environment:
      POSTGRES_USER: postgres
      POSTGRES_PASSWORD: password
  web:
    build: .
    command: python3 manage.py runserver 0.0.0.0:8000 
    volumes:
      - .:/code
    ports:
      - "8000:8000"
    depends_on:
      - db

On suppose que deux conteneurs, "db" et "web", démarreront dans ** services **. Étant donné que les points sont définis dans build in ** web **, créez et utilisez l'image à partir du Dockerfile défini précédemment. Utilisez l'image SQL "postgres" pour db. ** commande ** signifie la commande exécutée au démarrage du conteneur. Ici, "manage.py" est exécuté avec "python3", et l'adresse IP et le numéro de port à écouter sont spécifiés comme "runserver" pour démarrer un serveur léger pour le développement comme argument. "Manage.py" est un fichier qui est généré automatiquement lors de l'installation de Django. Cependant, les commandes décrites ici seront écrasées si les commandes sont passées lorsque le conteneur est exécuté. Par conséquent, si vous ne passez pas la commande comme argument, la commande docker-compose sera exécutée. ** valunes ** bind monte le répertoire courant sur / code. ** ports ** est publié à 8000 et spécifié pour être transféré au conteneur 8000. Il est nécessaire de faire correspondre le numéro de port du "serveur d'exécution" avec le numéro de port de la destination de transfert. ** depend_on ** Définissez une dépendance pour que le service "db" soit démarré avant le démarrage du service "web".

Créer un projet Django

% docker -compose run web django-admin.py startproject examplepj .

Spécifiez le service "web" défini en yml dans l'argument de l'exécution de docker-compose. Après cela, la commande à exécuter lorsque le conteneur du service Web est démarré. django-admin.py est également créé en installant Django. Ici, django-admin.py est exécuté et un projet django est créé avec "start project". Le nom du projet est examplepj et la destination de sauvegarde est le répertoire courant. Le répertoire actuel sera le répertoire / code spécifié dans le Dockerfile.

% ls -l

Vous pouvez voir que le répertoire courant actuel et le répertoire / code du conteneur sont montés en liaison.

Décrivez les paramètres de la base de données et démarrez le serveur Web de développement.

% vim examplepj/settings.py

settings.py


ALLOWED_HOSTS = ['*']

----réduction----

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.postgresql', #Spécifiez postgresql pour ENGINE
        'NAME': 'postgres',                        #Spécifier les postgres
        'USER': 'postgres',                        #Spécifier les postgres
	'PASSWORD': 'password',
        'HOST': 'db',                              #docker-Étant donné que le conteneur lancé par compose peut effectuer la résolution de noms par le nom du service, l'hôte peut être spécifié en tant que db.
        'PORT': 5432,                              #Spécifiez le port par défaut 5432 de postgresql
    }
}

Démarrez chaque service

% docker-compose up -d
Starting django_db_1 ... done
Creating django_web_1 ... done

Il peut être confirmé que la connexion est établie avec Ip: 8000. Notez que si vous exécutez un script administratif tel que manage.py, il peut échouer si vous ne l'exécutez pas dans un conteneur. Puisque l'environnement d'exécution de python est préparé dans le conteneur, l'exécution du script de python lui-même est exécutée dans le conteneur.

Création d'applications de sondages de didacticiel Django

-#Créer un fichier d'application de sondages dans le projet
% docker-compose run web python3 manage.py startapp polls
-# views.modifications de la page py
% vim polls/views.py

views.py


from django.http import HttpResponse

# Create your views here.
def index(request):
  return HttpResponse("Hello, world. You're at the polls index.")

Ceci définit le message qui sera affiché lors de l'accès à l'URL "sondages".

Réglage de l'itinéraire pour polls.index

% vim polls/urls.py

urls.py


from django.urls import path

from . import views

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

Il est défini pour afficher le résultat de la méthode d'index créée.

Configuré pour lire les urls.py créées à partir des urls.py principales.

% vim examplepj/urls.py

urls.py


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

Cela affichera la page d'index à l'adresse ip: 8000 / polls /. En ajoutant le code source de cette manière, vous pouvez poursuivre le développement tout en exécutant django dans le conteneur.

Arrêter le conteneur

% docker-compose stop

Recommended Posts

Construction de l'environnement de développement Django à l'aide de Docker-compose (mémorandum personnel)
Construction d'un environnement d'analyse de données avec Docker (mémorandum personnel)
Construction de l'environnement du serveur API Rails à l'aide de docker-compose
Création d'un environnement de développement à l'aide d'IntelliJ IDEA + Maven + Tomcat 9
construction d'environnement de développement Java
Manuel de construction de l'environnement de développement stable pour "Rails6" avec "Docker-compose"
Qu'est-ce que Docker-compose (mémorandum personnel)
Construction d'environnement pour le développement d'applications Servlet
[Unity] Procédure de construction de l'environnement de développement Android
Construction de l'environnement de développement Laravel avec Docker (Mac)
Sapper × Go (écho) × Construction de l'environnement de développement Docker
Création d'un environnement de développement pour Universal Robotics UR Caps
Mémo de construction de l'environnement de développement Java sur Mac
Création d'un environnement de développement Kotlin à l'aide de SDKMAN
[Docker] Construction de l'environnement de développement Rails6 / Ruby2.7 / MySQL8
Mémorandum de construction de l'environnement Redmine (Scrum, Agile Plug-in)
Construction de l'environnement de développement Java Spring Boot + Docker
[Note personnelle] L'environnement de développement Java est prêt
Construction d'un environnement de développement simple Docker + Django
Préparez un environnement de développement Nuxt (web) + Laravel (API) dans le même référentiel à l'aide de docker-compose
[Développement d'applications Jakarta EE 8 avec Gradle] 1. Construction de l'environnement
Rationalisation du développement de système Web à l'aide de docker-compose et de Git
Procédure de construction d'environnement pour l'utilisation de PowerMock avec JUnit
Créer un environnement Kaggle à l'aide de Docker officiel et de vscode
Gestion des données à l'aide du volume dans Docker (mémorandum personnel)
Construction de l'environnement de développement Simple Docker Compose + Django
[Note] Construction de l'environnement Struts2 à l'aide de Gradle dans Eclipse
Autoriser le développement dans l'environnement Eclipse à l'aide du SDK iPLAss
Procédure de construction et de développement de l'environnement local Wordpress avec Docker
Environnement de développement Java
[Printemps] Construction de l'environnement
Créez un environnement de développement Java à l'aide de jenv sur votre Mac
Introduction au développement de modules Slay the Spire (2) Construction de l'environnement de développement
Créer un environnement de développement Java sur l'installation Mac-JDK (version de préservation 2020)
[Mac] Construction de l'environnement de développement VS Code (Java, Gradle, Node.js)
Gestion des données à l'aide de Bindmount de Docker et de tmpfs (mémorandum personnel)
Étude TDD # 1 Construction de l'environnement et premier développement piloté par les tests (6 juillet 2020)
Essayez de créer un environnement de développement Java à l'aide de Docker
Créer un environnement de développement Java + Spring avec VirtualBox + Ubuntu (Xfce4)