Auparavant, dans l'article suivant, j'ai expliqué comment créer un environnement de développement Django avec un seul conteneur à l'aide de Dockerfile. Construction de l'environnement de développement Simple Docker + Django
Cette fois, je décrirai la méthode en utilisant Docker Compose.
Comme pour la dernière fois, nous visons à construire un environnement simple, nous allons donc utiliser le standard Django SQLite3 tel qu'il est pour la base de données.
Nous supposons que Windows et Mac avec Docker Desktop installé, ou Linux avec Docker Engine et Docker Compose installés.
Pour Windows et Mac, Docker Compose est inclus dans Docker Desktop, il n'est donc pas nécessaire de l'installer séparément.
Les commandes de l'article sont exécutées sur le terminal Mac, mais si Docker Desktop est installé, il semble que des commandes similaires puissent être exécutées sur l'invite de commande Windows.
Utilisez Dockerfile et docker-compose.yml pour créer un environnement de développement Django avec plusieurs conteneurs Docker.
Créez un répertoire de travail arbitraire sur la machine locale et créez un fichier nommé Dockerfile
, requirements.txt
, docker-compose.yml
et un répertoire avec un nom arbitraire. (Ici, nous l'appelons src).
Dockerfile
docker-compose.yml
requirements.txt
src/
Modifiez le contenu du Dockerfile comme suit.
Dockerfile
FROM python:3.8.3
ENV PYTHONUNBUFFERED 1
RUN mkdir /code
WORKDIR /code
COPY requirements.txt /code/
RUN pip install -r requirements.txt
COPY . /code/
Modifiez le contenu de requirements.txt comme suit.
requirements.txt
django
pyyaml
Modifiez le contenu de docker-compose.yml comme suit.
docker-compose.yml
version: '3'
services:
web:
build: .
command: python manage.py runserver 0.0.0.0:8000
volumes:
- ./src:/code
ports:
- "8000:8000"
J'omettrai le Dockerfile et les requirements.txt car ils sont expliqués dans Article précédent.
Dans docker-compose.yml
, définissez des services tels que serveur Web, base de données, serveur de messagerie, etc.
Seul le service nommé web est défini ici.
Si vous démarrez le conteneur avec la commande docker-compose
, le conteneur démarrera pour chaque service défini ici.
Exécutez la commande docker-compose run
sous le répertoire où se trouve le Dockerfile, etc.
En spécifiant le nom du service web après run
, vous exécuterez la commande django-admin start project
sur le service Web.
$ docker-compose run web django-admin.py startproject django_prj .
Selon build: .
décrit dans le service Web dans docker-compose.yml
, si le conteneur n'est pas créé, l'image est automatiquement construite et le conteneur est créé à ce moment.
Vous pouvez voir que le conteneur a été créé dans la fenêtre du tableau de bord de Docker Desktop. Si le projet Django est créé avec succès, le fichier de modèle de projet sera créé sous le répertoire src.
db.sqlite3
django_prj
manage.py
Exécutez la commande docker-compose up
sous le répertoire où se trouve le Dockerfile, etc.
$ docker-compose up
Vous pouvez voir que le conteneur a démarré dans la fenêtre du tableau de bord de Docker Desktop.
Pour confirmation, allez sur http: // localhost: 8000 /
dans votre navigateur.
Après cela, lisez la documentation officielle de Django et les livres de référence disponibles dans le commerce, et si une commande est spécifiée, ajoutez docker-compose run [nom du service Web]
devant la commande à Django sur le conteneur Docker. Diverses opérations seront exécutées pour.
Comme Docker, les informations sur la création de l'environnement de développement pour Docker Compose et Django ont également été un énorme succès, mais je n'ai trouvé que des entrées avec des paramètres hors spécifications avec un œil sur l'environnement de production, je vais donc lire cet article par moi-même pour revenir en arrière. créé.
De plus, bien qu'il n'y ait pas de corps ni de couvercle, la méthode de création d'un conteneur Django expliquée dans le document officiel Docker est la plus simple à comprendre, veuillez donc vérifier cela.
Il existe une traduction de la page sur le site du document en japonais, mais les paramètres peuvent différer de l'original, donc si vous ne pouvez pas lire l'anglais, reportez-vous à l'original pour les paramètres et traduisez l'explication en japonais. Je pense que vous devriez vérifier la documentation.