[PYTHON] Considérez la description de Dockerfile (Django + MySQL②)

À propos de cet article

Cet article est la ** partie 2 ** des articles relatifs à «Apprenez à utiliser Docker en créant l'environnement de Django + MySQL».

  1. Créer un environnement virtuel Python à l'aide de venv
  2. ** Considérez la description de Dockerfile (cet article) **
  3. Considérez la description de docker-compose.yml
  4. Modifiez le fichier de configuration et exécutez docker-compose up
  5. Ajuster le moment du démarrage du conteneur entre les services dépendants

introduction

Dans cet article, nous envisagerons d'écrire un Dockerfile pour créer une ** image Docker ** pour Django.

Pour ** l'image Docker **, c'est comme (comme une "image dans ma tête") ** une petite machine dédiée pour exécuter des projets qui s'exécute sur un système d'exploitation indépendant de la machine hôte ** Je l'attrape.

Concevez l'image Python officiellement préparée pour le projet Django via la description dans le Dockerfile. La description elle-même est presque la même que celle écrite dans le Document officiel. Ici, nous examinerons la signification de la description afin de pouvoir la concevoir et la personnaliser selon les besoins à l'avenir.

De plus, nous continuerons en supposant que l'installation de Docker, etc. est déjà terminée.

** Dockerfile est créé directement sous le répertoire du projet créé Dernière fois. ** **

La description

Tout d'abord, la description de l'ensemble du fichier est la suivante.

Dockerfile


FROM python:3.7
ENV PYTHONUNBUFFERED 1

RUN mkdir /code
WORKDIR /code

COPY requirements.txt /code/
RUN pip install --upgrade pip
RUN pip install -r requirements.txt

COPY . /code/

EXPOSE 8000

Pensez à la signification de la description

Du haut jusqu'en bas,

FROM python3.7

Sur la première ligne, ** spécifiez l'image à utiliser à partir des images déjà créées **. Python3.7 est spécifié ici en fonction de l'environnement virtuel créé dans Article précédent.

ENV PYTHONUNBUFFERED 1

Sur la deuxième ligne, ** ʻENV` spécifie la variable d'environnement **. Cela signifie que la valeur de la variable d'environnement «PYTHONUNBUFFERED» est définie sur «1». Défini pour désactiver la mise en mémoire tampon Python pour les E / S standard.

RUN mkdir /code

Sur la 4ème ligne, vous pouvez utiliser RUN pour ** spécifier la commande à exécuter au moment de la construction **. Ici, nous créons un répertoire code.

WORKDIR /code

Sur la 5ème ligne, ** spécifiez le répertoire de travail **. Il spécifie à partir de quel répertoire le "RUN" et le "CMD" suivants seront exécutés.

COPY requirements.txt /code/

Après un certain temps, sur la 7ème ligne, Dernière fois Copiez le ** requirements.txt créé dans le répertoire code **. Vous pouvez faire la même chose avec ʻADD, mais il semble que ** COPY soit recommandé pour copier des fichiers purs ** en raison de sa polyvalence. (Se référer au document officiel](https://docs.docker.com/develop/develop-images/dockerfile_best-practices/#add-or-copy))

RUN pip install --upgrade pip

Sur la ligne 8, mettez à jour le pip lui-même,

RUN pip install -r requirements.txt

Sur la 9ème ligne, installez les packages décrits dans le requirements.txt que vous avez copié précédemment.

COPY . /code/

Ligne 11, cela copiera tous ** tous les répertoires / fichiers ** sous la ** racine du projet du PC hôte (Mac) ** (la hiérarchie où se trouve le Dockerfile) dans le ** conteneur qui sera généré plus tard. ** Sera.

EXPOSE 8000

Enfin, ** déclarez le numéro de port à utiliser **. ** Par convention, il s'agit souvent du nombre standard utilisé dans les bibliothèques / frameworks **, donc ici nous spécifions la valeur par défaut «8000» dans «Django». (J'ai également essayé de déclarer un autre numéro, mais cela semblait fonctionner correctement s'il était cohérent avec les arguments de la ligne de commande lors de l'exécution du serveur et la description dans docker-compose.yml que je créerai plus tard.)

Structure de répertoire actuelle

django_starter
    ├── config
    │     ├── __init__.py
    │     ├── asgi.py
    │     ├── settings.py
    │     ├── urls.py
    │     └── wsgi.py
    ├── Dockerfile        <- New!
    ├── manage.py
    ├── .venv
    │   └── (Abréviation)
    └── requirements.txt

À la fin

Avec cela, la description de Dockerfile pour créer l'environnement de Django est une pause.

Ensuite, réfléchissons à la description de docker-compose.yml basée sur le Dockerfile créé cette fois. Cliquez ici pour le prochain article ↓ "3. Considérez la description de docker-compose.yml"

Merci pour votre visite.

Recommended Posts

Considérez la description de Dockerfile (Django + MySQL②)
Prenons la description de docker-compose.yml (Django + MySQL ③)
J'ai essayé le serveur asynchrone de Django 3.0
Comprendre la commodité de Django Rest Framework
Script pour changer la description de fasta
Comment vérifier la version de Django
Signification de {numéro de version} dans le package mysql rpm
J'ai essayé de résumer les paramètres des différentes bases de données de Django (MySQL, PostgreSQL)
Sortie exclusive de l'application Django utilisant ngrok
J'ai vérifié la période de rétention de session de django
Envisagez d'améliorer la précision de la détection des anomalies VAE
L'histoire de l'affichage des fichiers multimédias dans Django
Paramètres Django + MySQL
Description générale des notificateurs CPUFreq core et CPUFreq
Le mur lors du passage du service Django de Python 2.7 à la série Python 3
[Django] Changer l'adresse IP par défaut de la commande runserver
[Django 2.2] Trier et obtenir la valeur de la destination de la relation
[Python] Changeons l'URL du site administrateur de Django
Le début de cif2cell
Le sens de soi
Impressions de toucher Django
le zen de Python
L'histoire de sys.path.append ()
[Django] Renommer le projet
Utiliser MySQL avec Django
La vengeance des types: la vengeance des types
Modifiez le fichier de paramètres et exécutez docker-compose up (Django + MySQL ④)
Remarque DJango: depuis le début (Simplification et fractionnement d'URLConf)
J'ai participé à l'activité de traduction du document officiel Django
Django renvoie le contenu du fichier sous forme de réponse HTTP
Maintenance de l'environnement de développement Django + MongoDB (en cours d'écriture)
L'histoire du champ de modèle Django disparaissant de la classe
Résumé des points d'achoppement à Django pour la première fois
Jusqu'au début du tutoriel django avec pycharm sous Windows
[Django] Mémo pour créer un environnement de Django + MySQL + Vue.js [Python]