[PYTHON] Modifiez le fichier de paramètres et exécutez docker-compose up (Django + MySQL ④)

À propos de cet article

Cet article est un groupe d'articles liés à ** Apprenez à utiliser Docker via la construction d'environnement Django + MySQL ** ** Part.4 ** Cela correspond à.

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

introduction

Dans cet article, nous initialiserons le projet django et essayerons d'exécuter le serveur de développement en utilisant le fichier docker-compose.yml précédemment créé.

Initialiser django

Créer un fichier de configuration local

Avant de modifier settings.py, créez local_settings.py dans le même répertoire que settings.py. Si vous souhaitez publier sur GitHub etc., supprimez ce fichier de la cible de gestion.

config/local_settings.py


SECRET_KEY_LS = '**************************************************'
DB_NAME = "************"
DB_USER = "************"
DB_PASSWORD = "************"

La SECRET KEY de config / settings.py générée au moment de l'exécution de $ django-admin start project est définie sur SECRET_KEY_LS, et la description est déplacée ici. Pour DB_NAME, DB_USER et DB_PASSWORD, décrivez le même contenu que le fichier .env créé la dernière fois et lors de la connexion de Django à la base de données du conteneur MySQL, à partir de settings.py comme suit. Importez et utilisez.

Modifier le fichier de configuration

Modifiez settings.py.

config/settings.py


import os
import from .local_settings import SECRET_KEY_LS, DB_NAME, DB_USER, DB_PASSWORD

# (Omission)

SECRET_KEY = SECRET_KEY_LS

Tout d'abord, importez les variables nécessaires, etc., et remplacez «SECRET_KEY_LS» par «SECRET_KEY».

Ajoutez ensuite 127.0.0.1 et localhost au même fichier ʻALLOWED_HOSTS`.

config/settings.py


ALLOWED_HOSTS = ["127.0.0.1", "localhost"]

Le contenu de "" localhost "" est le même car le nom est résolu en "" 127.0.0.1 "" par la description dans "~ / etc / hosts" dans le conteneur, mais pour des raisons de convivialité, les deux sont enregistrés ici. Je le ferai.

Le serveur d'applications lui-même fonctionne sur 0.0.0.0 comme spécifié par command dans docker-compose.yml, mais en limitant la description ici à localhost, ** à partir d'une autre machine que la machine hôte. Vous devriez pouvoir lire la connexion **. (Tant que j'essayais de me connecter à partir d'un autre terminal sous le même environnement WiFi, il semblait que les paramètres étaient comme prévu.)

Enfin, modifiez les éléments liés aux paramètres de connexion à la base de données. J'ai déjà importé ce dont j'ai besoin de local_settings.py plus tôt, donc j'applique simplement chacun.

config/settings.py


# Database

DATABASES = {
    'default': {
        'ENGINE': "django.db.backends.mysql",
        'NAME': DB_NAME,
        'USER': DB_USER,
        "PASSWORD": DB_PASSWORD,
        'HOST': "db",
        "PORT": "3306"
    }
}

Pour la partie HOST, vous pouvez entrer le ** nom du service MySQL ** nommé dans docker-compose.yml, donc ici c'est" "db" . PORT a été spécifié avec la valeur par défaut MySQL 3306` comme auparavant.

Ceci termine les réglages de base.

Exécutez le serveur

Avec les paramètres jusqu'à présent, tout, du ** lancement de l'image et du conteneur à l'exécution du serveur Django **

$ docker-compose up

Vous devriez pouvoir le faire avec une seule commande.

Cependant, lorsque je l'exécute, je rencontre des problèmes dans certaines conditions. À ce sujet, le prochain article "5. Ajustez le délai de démarrage du conteneur entre les services dépendants" Prière de se référer à.

À propos du contrôle de fonctionnement

En tant que journal au moment de l'exécution du serveur

djst_django | Starting development server at http://0.0.0.0:8000/
djst_django | Quit the server with CONTROL-C.

Cependant, en raison du réglage, le contrôle de fonctionnement réel n'est pas le http: //0.0.0.0: 8000 / affiché, mais ** http: //172.0.0.1: 8000 / ouhttp. Cela se fera depuis: // localhost: 8000 /**.

Structure du répertoire

django_starter
    ├── .venv
    │   └── (Abréviation)
    ├── config
    │     ├── __init__.py
    │     ├── asgi.py
    │     ├── local_settings.py    <- New!
    │     ├── settings.py
    │     ├── urls.py
    │     ├── wait_for_db.py       <-Voir un autre article
    │     └── wsgi.py
    ├── mysql
    │     ├── data                 <-Généré automatiquement
    │     │   └── (Abréviation)
    │     └── my.cnf
    ├── .env
    ├── docker-compose.yml
    ├── Dockerfile
    ├── manage.py
    └── requirements.txt

Diverses commandes

Enfin, écrivez vos commandes préférées ici.

# $ pwd
# (Abréviation)/django_starter/

#commandes liées à django( shell,migrer etc.)
$ docker-compose run web python manage.py [command]

#Exécuter le serveur de développement
$ docker-compose up

#Mise à jour du package
(.venv) $ pip install [nom du paquet]
(.venv) $ pip freeze >> requirements.txt

#Entrez dans le conteneur
$ docker-compose run --rm web /bin/bash #Entrez avec bash
#Ou...
$ docker-compose up -d #Après avoir couru en arrière-plan...
$ docker exec -it [Nom du conteneur] /bin/bash #Entrez avec bash

#Arrêter le conteneur
$ docker-compose down

À la fin

Ceci complète l'objectif de ce groupe d'articles, ** Construire un environnement Django + MySQL à l'aide de docker-compose **. Après cela, je gérerai et utiliserai le référentiel de modèles Django avec les paramètres du front-end à mon goût.

En tant qu'impression sur laquelle j'ai travaillé, pour moi-même en tant que débutant, c'est devenu une chance d'apprendre non seulement Docker mais aussi les bases du terminal et des réseaux **, et je sens que j'ai beaucoup appris en l'essayant. .. Cependant, en regardant les journaux qui circulent encore vers le terminal (en particulier pour MySQL), il y a beaucoup de choses à améliorer ... Je souhaite continuer à apprendre et viser un état dans lequel je peux l'utiliser sous une forme plus adaptée aux batailles réelles, comme son utilisation dans un environnement de production, tel qu'Amazon ECS.

Merci de visiter notre site.

.

Recommended Posts

Modifiez le fichier de paramètres et exécutez docker-compose up (Django + MySQL ④)
Créez des commandes Django personnalisées et exécutez-les à partir de la ligne de commande
Exécutez Pylint et lisez les résultats
Considérez la description de Dockerfile (Django + MySQL②)
Créer et exécuter la configuration d'embulk dans Jupyter
Différence entre le fichier env_file docker-compose et le fichier .env
Trouvez-le dans la file d'attente et modifiez-le
Modifier le HTML et le CSS de la table de décalage Django
Prenons la description de docker-compose.yml (Django + MySQL ③)
Créer en Python sans fichier image factice dans Django et tester le téléchargement de l'image
Mémorandum Python: reportez-vous au texte et modifiez le nom du fichier lors de la copie du fichier cible