Comment créer un environnement Django (python) sur Docker

Comment créer un environnement Django (python) sur Docker

Un résumé de la procédure de création d'un projet et d'une application à l'aide de Django sur docker et son affichage sur le navigateur à l'aide du serveur de développement

procédure

  1. [Créer un répertoire PJ](Créer un répertoire #pj)
  2. [Créer un fichier requirements.txt](Créer un fichier #requirementstxt)
  3. [Créer un fichier docker](Créer un fichier docker)
  4. [Créer docker-compose.yml](Créer docker compose yml)
  5. [Créer un conteneur à partir du fichier de configuration](Créer un conteneur à partir du fichier de configuration)
  6. [Edit settigs.py](Edit settigspy)
  7. Démarrer le conteneur (Démarrer le conteneur)
  8. [Créer une application](Créer une application)
  9. Modifier views.py (Modifier viewspy)
  10. [Créer et modifier urls.py](Créer et modifier urlspy)

> Site référencé ・ [Créer Django officiel Docker](https://docs.docker.com/compose/django/) ・ [Création de la première application officielle de Django](https://docs.djangoproject.com/ja/3.1/intro/tutorial01/)

Créer un répertoire PJ

mkdir django
cd django

Création d'un fichier requirements.txt

Créez un fichier qui spécifie le package à installer.

touch requirements.txt

requirements.txt


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

Installez Django et Psycopg.

Psycopg est un outil pour une utilisation efficace de PostgreSQL. -binary est une version linguistique uniquement pour le système d'exploitation, donc aucune compilation n'est requise.

Créer un fichier docker

Créez un fichier docker pour créer une image python3.

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/

À partir du nom de l'image Extrayez l'image spécifiée du hub docker. (Trouver local sinon sur dockerhub)

・ ʻENV nom de la variable` Définition des variables d'environnement. Mettez 1 dans la variable PYTHONUNBUFFERED. Faites la sortie standard (stdout) et la sortie d'erreur standard (stderr) de la sortie de la console immédiatement lorsqu'une erreur se produit (désactivez le tampon, comme l'option -u de python).

PYTHONUNBUFFERED


・ `Commande RUN` Créez un répertoire appelé / code dans le conteneur

Répertoire WORKDIR Fait du répertoire spécifié (/ code) le répertoire racine

· COPIER le conteneur hôte Copiez l'hôte requirements.txt sous / code / du conteneur

· Pip install -r chemin du fichier Installez le package écrit dans le fichier spécifié.

Généralement, le fichier utilise requirements.txt. 「-r」 = 「--requirement」


## Création de docker-compose.yml Créez un fichier docker-compose pour créer l'image. Un fichier pour créer une image contenant plusieurs conteneurs. (Dockerfile est un seul conteneur)
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

Préparez deux conteneurs dans l'image.

Version:" 3.8 " Spécifiez la version de la méthode de description de docker-compose.yml. Il est nécessaire de préciser car la méthode d'écriture diffère selon la version.

Services Le conteneur à créer. Créez deux, db et web.

・ ʻImages` Spécifiez l'image à utiliser. Créez un conteneur en extrayant les postgres du hub docker.

・ ʻEnvironnement` Définissez les variables d'environnement. Définissez DB sur postgres. le nom d'utilisateur et PW sont facultatifs.

· Chemin du répertoire de construction Créez un conteneur à partir du dockerfile dans le répertoire spécifié.

Si aucun nom de fichier n'est spécifié, sélectionnez le fichier docker. Si vous avez un nom différent, spécifiez également le nom du fichier.

Commande Une commande à exécuter à l'intérieur d'un conteneur. Démarrez le serveur sur localhost: 8000.

Exécutez runserver dans manage.py. manage.py est un utilitaire de ligne de commande. Importez des commandes utiles.

· Volumes: -Hôte: Conteneur Liez (montez) le répertoire hôte avec le répertoire spécifié dans le conteneur.

Le dossier de projet sur l'hôte et / code dans le conteneur sont synchronisés. ** Pour les fichiers que vous ne souhaitez pas synchroniser, créez .dockerignore ** et décrivez le nom du fichier / dossier.


· `Ports: -" Hôte: Conteneur "` Connectez le port côté hôte au port spécifié côté conteneur.

Accès localhost: 8100 mène au port 8000 dans le conteneur.

Dépend_on Connectez le conteneur Web au conteneur db. Auparavant, le lien était utilisé, mais pour la version 2.0 et supérieure, les conteneurs de docker-compose.yml peuvent être connectés via un réseau sans aucune description particulière. (Cela dépend-il de inutile?)


## Créer un conteneur à partir du fichier de configuration
docker-compose run web django-admin startproject mysite

-Docker-compose run [nom du service] [commande] Créez un conteneur avec le nom de service spécifié et exécutez la commande.

Créez une image basée sur le fichier docker-comopse.yml dans le dossier exécuté, créez un conteneur et démarrez tout en même temps.

Ici, démarrez le service Web.

Nom de Jjango-admin startporject PJ Créez un PJ.

Un répertoire est créé avec le nom PJ spécifié (mysite).

Fichier à créer


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

## Modification de settigs.py Ecrivez les paramètres de la base de données dans mysite / settings.py. Puisque sqlite3 est spécifié pour le paramètre initial, écrasez-le.

mysite/settings.py


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

(Référence) Description par défaut


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

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

## Démarrer le conteneur
docker-compose up

réduction
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.

Démarrez le conteneur créé.

Le serveur spécifié démarre. Pour voir l'état, ouvrez une autre fenêtre bash et exécutez docker ps.

$ 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

Si vous voulez qu'il démarre en arrière-plan, utilisez ʻup -d`.

La page s'ouvre lorsque vous accédez à localhost: 8100 (vous pouvez accéder à loaclhost: 8000 dans le conteneur)

image.png


## Créer une application Entrez dans le conteneur et créez une application.
##Lancer bash dans un conteneur en cours d'exécution
$ docker exec -it django_web_1 bash
root@faef5f41e1c7


##Créer une application django
root@faef5f41e1c7:/code# python manage.py startapp polls


##Vérifiez le dossier
root@faef5f41e1c7:/code# ls
Dockerfile  docker-compose.yml	manage.py  mysite  polls  requirements.txt

Réussir à créer des sondages dans le conteneur. Un répertoire est également créé côté hôte. (Parce que le volume est spécifié et synchronisé)

image.png

Différence entre projet et application

La commande django exécute des commandes similaires, startproject et startapp.

django-admin startproject mysite python manage.py startapp polls

Il n'y a qu'un seul projet et il peut y avoir plusieurs applications.

Une seule application appelée polls est créée dans le projet appelé mysite.


## Modifier views.py Modifiez views.py dans le dossier sondages que vous avez créé précédemment pour contrôler l'affichage de l'écran.

L'éditeur n'étant pas installé dans le conteneur, quittez le conteneur une fois.

root@faef5f41e1c7:/code# exit

▼ Décrivez le programme qui affiche «Hello, This is Django Polls» à l'écran.

polls/views.py


from django.http import HttpResponse


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

## Création et modification de urls.py Il est nécessaire de définir l'URL dans les sondages et l'url en tant que projet.

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),
]

Reconnaissez les urls.py des sondages comme un chemin et rendez-le accessible avec polls /.

Après l'écriture, chargez la page avec localhost: 8100 / polls.

image.png

L'affichage est terminé avec succès.

Recommended Posts

Comment créer un environnement Django (python) sur Docker
Comment créer un environnement Python sur Amazon Linux 2
Comment créer un nouvel environnement virtuel Python sur Ubuntu
[Python] Créer un environnement de développement Django avec Docker
Comment créer un environnement Python à l'aide de Virtualenv sur Ubuntu 18.04 LTS
Créer un environnement python3 sur CentOS7
Comment exécuter une application Django sur un conteneur Docker (environnement de développement et de production)
Comment créer un environnement de développement de la série Python2.7 avec Vagrant
Comment créer un environnement de traduction sphinx
Construire un environnement python sur MacOS (Catallina)
Je veux créer un environnement Python
Créer un environnement Python + OpenCV sur Cloud9
Comment créer un bel environnement Python sur un nouveau Mac et installer Jupter Notebook
# 3 Créez un environnement Python (Django) avec une instance EC2 (ubuntu18.04) d'AWS part2
Apprenez à utiliser Docker en créant un environnement pour Django + MySQL
Créez un environnement LAMP sur votre Docker local
Créez simplement un environnement d'exécution Python 3 sous Windows
[Latest] Comment créer un environnement Java sur Ubuntu
Créez un environnement python avec ansible sur centos6
Créer un environnement Python sur Mac (Mountain Lion)
Créez un environnement de développement Python sur votre Mac
Créez rapidement un environnement Python Django avec IntelliJ
Construire un environnement de développement Python sur Raspberry Pi
Construisez un environnement Python + bouteille + MySQL avec Docker sur RaspberryPi3! [Construction facile]
Créer un environnement Python sur Windows
Construire un environnement Python avec Windows
Créer un environnement Python hors ligne
Créer un environnement de développement Python basé sur GVim sur Windows 10 (3) GVim8.0 et Python3.6
Créer un environnement de développement Django à l'aide de pyenv-virtualenv sur Mac
Comment configurer un environnement Python à l'aide de pyenv
# 2 Créez un environnement Python avec une instance EC2 d'AWS (ubuntu18.04)
Comment déployer une application Django dans le cloud Alibaba
Créer un environnement Python d'apprentissage automatique sur Mac OS
Créer un environnement de développement Python basé sur GVim sur l'installation de Windows 10 (1)
Créer un environnement de développement Python sur Mac OS X
Construire un environnement virtuel Python en utilisant venv (Django + MySQL ①)
[Go + Gin] J'ai essayé de créer un environnement Docker
Créez un environnement Python sur votre Mac en utilisant pyenv
Comment créer un environnement de développement pour TensorFlow (1.0.0) (Mac)
Créer un environnement de développement Python à l'aide de pyenv sur MacOS
Comment utiliser Django avec Google App Engine / Python
Comment exécuter Django sur IIS sur un serveur Windows
Créez un environnement de développement avec Poetry Django Docker Pycharm
Comment créer un environnement pour utiliser plusieurs versions de Python sur un Mac
Construisez un environnement Python + bouteille + MySQL avec Docker sur RaspberryPi3! [Essai et erreur]
docker build python basé sur alpin
Construire un environnement Python sur Mac
Créer un environnement go à l'aide de Docker
Créer un environnement Python sur Mac (2017/4)
Construire un environnement Mysql + Python avec docker
Créer un environnement python dans centos
Comment supprimer un conteneur Docker
Créer un environnement Python 3.8 + Pipenv sur Ubuntu 18.04
Créer un environnement d'étude d'apprentissage automatique Python avec macOS Sierra
Une note sur la façon de préparer facilement un environnement de pratique Linux
Créez un environnement de développement Django avec Docker! (Docker-compose / Django / postgreSQL / nginx)
[Memo] Construire un environnement de développement pour Django + Nuxt.js avec Docker
Ne perdez pas contre Ruby! Comment exécuter Python (Django) sur Heroku